前端开发的日常工作更多的是围绕着需求和业务逻辑来展开,用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交互的顺序来相互调用。
所以你看,这个课程,其实就是一种逻辑思维的训练。哈哈哈,写到这里,我已经发现了先行者课程的下一次改版的点,就是以业务逻辑思维的训练为重心。
说的有点跑偏哈,我也是想到哪写到哪,到现在也不太再多写了,本文的结论有三个,
一、数据结构、算法要不要学,要看你现在的工作和自己技术;
二、我的先行者课程主要是讲业务逻辑分析;
三、先行者课程的下次改版,重心调整为业务逻辑分析思维的训练与提升。
暂无评论内容