前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【结构】前端开发要不要学习算法、数据结构?它有什么用?感觉工作中用不到呀

【结构】前端开发要不要学习算法、数据结构?它有什么用?感觉工作中用不到呀

作者头像
web前端教室
发布2018-07-30 11:53:20
1.5K1
发布2018-07-30 11:53:20
举报
文章被收录于专栏:web前端教室web前端教室

前端开发的日常工作更多的是围绕着需求和业务逻辑来展开,用js操作的也是json和dom会比较多一些,那么在这样的日常工作中,如何体现出“扎实的数据结构和算法”的优势呢?

其实这也是一个同学问我的问题。

<!-- -->

首先说结论,肯定是有用的。

算法是干嘛的?

简单的说,这东西是用来解决效率问题的。那你把提高效率这个要求放到前端开发里,你就会发现,要提高DOM的效率,要么是减少DNS请求,要么是减少操作DOM的层级,要么就是加带宽,加服务器,都是很直接粗暴的东西。如果是要解决前端工作中的日常业务问题,那么算法、数据结构的帮助并不多。

所以客观上来讲,前端确实是用的不多。前端的主要工作场景就是各种客户端,其中最主要的就是各种浏览器,也就是网页。而网页中最主要的效率瓶颈就是DOM操作。

就我个人主观看法吧,如果把范围限定在前端开发,真的,你深入的看看jq源码,都比你花时间研究算法和数据结构要强。当然了,我这话说出来可能会被喷,但你自己干个二三年你自己体会体会。

做为一个基本合格的前端开发,在技术成长的初中级阶段过于重视算法、数据结构,我觉得方面不太正确。

我认为一个好的基本合格的前端开发人员,应该基本能做到代码解耦合、MVC、MVVM、观察者、工厂、原型、业务与表现分离、合理封装组件、基本的前端架构设计能力、从业务抽象出对象、代码、逻辑来,我觉得就已经是一个合格的前端开发了。

在业务代码里,如果出现很多的算法、数据结构的话,从迭代、更新、维护、人员更替的角度来看,我会觉得不太适合。(你写个算法,你离职走了, 谁来维护?)

<!-- -->

如果你把视野范围扩大到了软件开发的层面,扩大到全栈开发,就需要对算法、数据结构有一定的学习掌握。

因为现在的前端大趋势之一,就是web应用软件化。一个网页越来越像一个在线应用程序。就说淘宝吧,你可以说它是一个网页,但如果我说它是一个在线应用程序,相信也不会有太多的人表示反对。

在这个层面上写代码,就得把自己定位为一个“程序员”。而前端开发工程师,只是程序员中的一个分支而已。程序就是数据结构+算法,而数据结构是程序员的编程基本功之一。

有人说程序员必看的四本书分别是,数据结构、编译原理、操作系统、****(名字我忘了)。但前端开发工程师必看的书是,js红皮高程第三版,犀牛书、什么的,面对的工作场景不同,需要学习和掌握的东西也不一样。

这就看你怎么定位自己,怎么看待眼前的工作,

-- 你认为自己是前端开发,只搞网页上的东西,你不必学习数据结构、算法;

-- 你认为自己是程序员,搞在线web应用,是软件开发的范围,那么你要学习数据结构和算法,只是时间早晚的问题。

<!-- -->

说了半天,数据结构 、算法怎么学?我也没说个一二三。因为我也没怎么学它,为啥?

太难,-_-

虽然我没学,但我明确的知道,学它有什么好处,“数据结构、算法,其实是一种思想!”通过这种思想来把实际的业务需求,转换为js代码,让它能听你的话。

电脑这东西发展到现在依然是010100101010110101010....这样式的,那么你怎么把产品经理、销售、老板、客户、UI设计师、阿猫阿狗等等的想法,变成电脑可以执行的操作呢?

数据结构与算法,就是教你做这个事的,“从具体的需求中,抽象出结构”,再用算法让它反复执行,就ok了。

这是一种逻辑思维的能力,每一个程序员,每一个写代码的人都要有这种能力。否则就是,会写js,但不会干活。

为啥?

因为不能从具体的业务中,抽象出需求的逻辑,更别提把业务逻辑变成用数据表示的结构了。

我是老尚,我没学过数据结构、算法。但我有这种逻辑思维的能力。怎么来的?漫长的工作,痛苦的煎熬,不断的思考,让我终于在某一天,我懂了,就这样。

但如果你学了数据结构、算法什么的,相信这个过程对你来讲会短一些。

<!-- -->

说点题外话,为什么许多学前端开发的人说找不到工作呢?他们明明也会写js,也会用vue、react什么的,有人说前端饱合了,其实并不是这样的。

真正的原因是,前端的需求变复杂了,需要前端开发工程师能够从复杂的业务需求中,提炼出逻辑模型。

但很多,怎么说呢,很多培训班出来的同学们,只是学会了写点html,css,js而已。他们搞不定提炼需求这个事儿,所以不能胜任工作,所以没人要他们。原因就这么简单。

而我清楚的看到了这一点,所以我的先行者课程和之前的web前端零基础课,更多是着重于业务逻辑的分析讲解,更多的是说,怎么从UI设计图上,把对方口头的需求提炼为一个一个的功能点,再如何把这些功能点落实为一个一个的函数、方法,然后这些函数方法对象之间,怎么样根据UI交互的顺序来相互调用。

所以你看,这个课程,其实就是一种逻辑思维的训练。哈哈哈,写到这里,我已经发现了先行者课程的下一次改版的点,就是以业务逻辑思维的训练为重心。

说的有点跑偏哈,我也是想到哪写到哪,到现在也不太再多写了,本文的结论有三个,

一、数据结构、算法要不要学,要看你现在的工作和自己技术;

二、我的先行者课程主要是讲业务逻辑分析;

三、先行者课程的下次改版,重心调整为业务逻辑分析思维的训练与提升。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 web前端教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档