常常听人吐槽说,前端技术更新太快、前端的细分太多,程序员太苦、很多东西学不过来。作为一名工作了9年的资深前端⼯程师,我也是深有感触。有时候,面对这种吐槽,我也是一笑而过。不过,面对这些吐槽,我看到的却是前端开发者内心的焦虑。面对越来越卷的行业现状,大多数的开发者都有一股想突破⾃我的想法,不然的话,那和咸⻥有什么区别。
首先,对于前端同学不断学习的态度我是很赞赏的,作为一名开发者,不停的学习新技术是每个开发者需要掌握的必备技能。但如果我们从另外⼀个⻆度来看,⼀个⾏业的新东⻄层出不穷,正说明这个⾏业⼀直在⾼速发展,而我们作为这个⾏业中的⼀员,这其实是⼀件⾮常好的事情,因为这说明这个⾏业⾥有更多的机会和成⻓空间。
记得我刚毕业的时候,前端还处于手工作坊的年代,在那个时候,前端不过是一个“切图仔”,自然也就没有前后端分离开发一说。而到了最近的10年,特别是5年,前端衍生出了众多的分支,基本后端开发的活也能干。
再次回到本编的开题,前端有没有永不过时的技能呢?狭义来说,前端是没有永不过时的技能的,但是不管前端技术和体系如何发展,它的规律和原理却是不变的。一直以来,我就把知识体系⽐作⼀棵⼤树,那些底层的规律和基本的原理是树⼲和⼤的树枝,在它们之上五花⼋⻔的各种技术、框架、库则是细⼩的树枝分叉和树叶。⼀味地追赶新的技术、框架,其实是在不停地拾取⼀⽚⽚树叶,看似枝繁叶茂,实则脆弱⽆⽐,⼀旦技术更迭,就⾮常容易枯萎凋落。因此,在我看来,我们只需要理解底层额一些规律和原理,上层的技术只需要掌握一些流行的框架即可。
所以,有时候别人问我该如何学习前端技术时,我的建议好似不要盲⽬地去追求所谓的新技术,不要⼀直把⼼⼒花在担⼼⾃⼰是否落伍上,⽽是要去多去观察整个⾏业,找到技术发展内在的规律和脉络,把最宝贵的时间花在那些可迁移的、不会过时的技能上。只有这样,你才能知道该如何前进,当然恐慌感也就自然降低了。
那或许有人会问,如何才能把握行业的规律和脉络呢?以前端开发来说,我观察了我身边很多优秀的前端专家,⽐如Winter、⽉影、大漠等,发现他们的核⼼竞争⼒并不在于掌握了多少前端技术和框架,或者最快地掌握最新的技术,他们更多的是关注那些底层、更抽象的能⼒,也就是编程能⼒、架构能⼒和⼯程能⼒,也即是每个前端架构师必备的一些技能。
编程能⼒:所谓编程能力,其实就是⽤代码解决问题的能⼒。编程能⼒越强,你就能解决越复杂的问题,细分之下,⼜有调试、算法、数据结构、操作系统原理等基础技能的⽀撑,你才能解决各种麻烦的问题。
架构能⼒,所谓架构能⼒,就是掌控和开发复杂系统的能⼒。当⼀个系统⾜够复杂,你会写每⼀块代码、能解决每⼀个问题,不等于你能搞定整个系统,这就需要架构能⼒。架构能⼒还包含了对业务的认知,以及建⽴抽象模型的能⼒等。
⼯程能⼒:所谓的⼯程能力,其实核⼼就是组织的能⼒。系统规模越来越⼤时,光靠你⼀个⼈是没办法完成的。那如何保证各个职能部门互相能够配合好,如何保证项⽬⾥⾯⽔平参差不齐的人能人尽其用,这些都离不开⼯程能⼒。
当然,前面所说的这些能力,也是前端⼯程师从初级、中级⾛向⾼级必须要跨越的鸿沟,也是我们可以拥有的永不过时的技能。并且,这些技能对于其他领域的程序员同样适用,下面是一个比较通用的程序员职业发展路线图。
前端说了很多关于前端学习方向的一个东西,那作为一名前端同学,我们有哪些技能是必须具备的呢,又有哪些成长的捷径可以借鉴呢?我认为,不管你是初级、中级还是⾼级,甚至架构师,以下技术和知识是必须具备的:前端知识架构部分、JavaScript 部分、html 和 css 部分、浏览器⼯作原理和 api 部分、编程与算法训练部分、组件化部分、⼯具链部分、发布与持续集成部分,并最终建⽴起前端的知识技能体系