技术是一条湍急的江流,我们或乘着自己的小船,或搭着公司的大帆,在激流中回转翻滚,旧的路途一定会过去的,但新的路途需要你的经验渡过。
我们来谈一谈,技术是变得‘简单’了,还是变得更‘难’。
作为一个野生程序员,从电脑小白,到前端er。记得第一次接触编程,更准确来说是“搬程”,是在2014年。那年壮志特别壮,搞定一些简单的html+css+js插件之后就找了一家公司工作,期间非常崇拜那些能够用javaScript写出轮播图、幻灯片、tab切换的“大神”,直到我真正接触到编程。。。
在领略了面向对象的魅力之后,逐渐的,好像所有的问题都变得更简单,无论是网页动态效果,数据加载还是比较炫酷的幻灯片、图表,它们全部都被激活了。这段时间我觉得技术是越来越“简单”的,可不是,自从理解面向对象或者各种设计模式之后,一切的问题都可以找到对应的方法,并且很可能有一个更加简单的库提供支持。
我觉得是解决问题的流程发生了变化,大多数处理问题的流程是,
发现问题-》思考-》百度代码-》功能分析-》完善,
而现在变成了
设计思考-》功能分析-》百度代码-》完成-》发现问题-》完善;
可以看到的是,遇见问题解决问题的效率是低下的,抽象的思考过后解决问题的效率才会变得更高。
技术的快速发展势必引出层出不穷的框架,而框架的发展必然是趋向高度抽象的。抽象给使用的人带来了简单,而对理解的人带来的却是更加的复杂。例如angular的出现,整个前端随即进入了抽象时代,AppModule、注入器等,再到vue,需要承认的是vue的学习曲线是类似框架中最友好的,编码方式也是最舒适的,但是vue的抽象层可不是那么简单,
还有react,你相信有某个人告诉你react全家桶很简单吗?曾经有一些后台欧巴告诉我,这东西很简单,和xxx很像,给他几分钟就ok了,真的ok?
如何理解抽象
抽象是通过分析与综合的途径,运用概念在人脑中再现对象的质和本质的方法,分为质的抽象和本质的抽象。分析形成质的抽象,综合形成本质的抽象(也叫具体的抽象——摘自百度百科。抽象是对现实事物的分析,再进行综合,抽象事物的本质,把事物复杂的一面转化成一个相对简单抽象。
抽象不代表简单
很多时候,技术看起来并不是越来越‘简单’,但也不太像越来越‘难’,事实上它正在变得越来越‘抽象’。抽象并不代表简单,可是理解了之后又不是太难。我认为它是介于之间的,不同的东西。就像从微观到宏观的转变,细胞到人,外表是简单的,内在是越来越复杂的。
就像是一支铅笔,你知道它是一只笔,它可以写字。你可以不知道他内部的笔芯是怎么形成的。但是你不能说新的圆珠笔比铅笔更简单,在使用层面确实是的,但是它是一个假象,因为使用它的人根本不会关心这支笔的内在。——但是我们不一样,我们是开发者。我们需要了解这只铅笔内部和那只圆珠笔究竟有什么不同,而圆珠笔往往比铅笔要复杂得多,它们都有一只笔芯,但是圆珠笔的笔头代表着工艺,铅笔则可能只代表了笔的基础。
不要认为新的技术更简单!
新的技术往往是对旧的技术的封装抽象,提出了更多的概念,更多的解决方法。但是它的内在并没有发生多少变化,react、vue、angular要依赖webpack等工具,它们的本质还是es6,是es6更复杂的功能抽象集合,那些实用的、简单的API对工作的帮助不可谓不小,但对你了解本质的帮助越来越无力,你并不能在vue语法中学到多少js知识是吗。jquery的api囊括了大部分dom操作,它使你更缺少动力深入那些基础了。
基础和抽象思维
我认为,深入基础,锻炼抽象思维,才是学习新框架的最佳途径,仅仅上手一个mvc框架可不能帮助你的技术提升多少。人类发现微观世界,使科技焕然一新,技术也需要探究“微观”,计算机原理更新的速度和框架更新的速度,已经不言而喻。
技术并不是越来越简单的,框架是你的羁绊
-------------
可能表述有问题,引起了一些误解,框架的意义我觉得就跟名字一样,架子,用框架开发可以不需要知道原理的,房子会住就行了。
重要的是原理,原理被抽象了,框架有时候遮挡了它们。
例如你可以不知道react的setState是怎么工作的,内部用了哪些API,事实上它表面上足够简单,实现功能的时候不需要懂它的原理。
转载请在开头注明出处