大前端知识体系整理(一)——各级别工程师的技能树
前言
本文为笔者回顾前端开发历程的一份总结和梳理,是对自己走过的路进行的复盘。想要总结出一些普适的规律,一是用来自己反思和规划未来,二是为后来人做一些力所能及的帮助。本文虽是作者原创,但肯定也看过其他大牛的文章,不过绝对自成一格,不会是那种cv党。笔者也会把觉得好的reference放到文章最后。
ps:整理过程中发现,去掉括号里的专有技能,好像对后端工程师也有一定的参考性。
1、初级工程师
阶段标准:
初级前端工程师的标准,就是能够完成日常的功能开发和debug,可以在已有的代码基础上做修改,优化和维护;熟练使用平时开发需要用到的工具即可,无需理解原理。这时候需要学习的东西是非常多的,不过由于只要掌握80%(二八法则的比喻,前80%的知识只需要20%的精力学习,后20%深入的知识则需要投入80%的精力)的使用知识,只需要付出20%的精力就能够学会,所以会很有成就感,进步也会非常快。
阶段分析:
需要大量的项目实践经验,至少应用一个框架开发实际项目半年以上,才算真正掌握一个框架的使用。另外就是项目开发过程中运用到的各种工具,每个领域都要熟悉一种,当然,只要熟悉基本操作即可。最后,对于业内的各种话题和思想要有概念,起码做到听说过,大概知道是干什么的。整个初级工程师的学习过程大约会持续1-2年。
学习诉求:
大量的实际开发经验;足够复杂的业务场景;业内最新信息;
工程技能:
熟练开发语言(js/es6/ts、html/template、css/less/scss、nodejs、json等)
熟练开发框架(react全家桶+antd、vue全家桶+element、angular+material等)
熟练开发工具(IDE、shell、fiddler/charles、git/svn、mock等)
熟练常用库(axios、jquery、lodash、moment等)
2、中级工程师
阶段标准:
在初级前端工程师的基础上,需要在原理上有更深入的理解。能够从较本质的层面分析和解决问题,需要具有从零搭建一个项目的能立,还要能够找出项目瓶颈和可优化的点。这时候就要触及那剩余的20%的知识了,进步的速度会慢下来,需要一定时间的沉淀。此时要适应这个节奏的变化,要耐得住寂寞,只有厚积才能勃发。
阶段分析:
经过初级工程师的阶段,现在最起码已经掌握了1个框架的使用。与初级相比,知识广度上,不会有特别大的变化,但是深度上就要差出一个档次了。俗话说,魔鬼藏在细节中,中级这个阶段,我们就要直面魔鬼了。当我们对一个事物熟悉到一定程度时,一般都会将其抽象化,以方便我们了解本质,寻找规律,最后达到触类旁通的境界。古代圣贤归纳的“象数理易”四个阶段,便是对此最好的解读。所以,如果你隐约的能够将之前你觉得不相关的知识联系起来时,那么知识的深度就已经达到了标准。举个最简单的例子:网络层面的缓存与计算机结构中的内存原理,有多少相似的地方?当然,单是某几个自己最常用的知识点达到足够的深度,就已经称得上是一个合格的中级工程师了。整个过程的积累需要大约2-3年的时间。
学习诉求:
足够深度的原理干货;自己模拟造轮子;业内最佳实践;
工程技能:
项目工程搭建及自动化(webpack/rollup/parcel/gulp等)
性能优化(交互、缓存、网络、运行效率等)
代码质量保证(eslint、stylelint、jest/mocha等)
其他常用领域达到初级水平以上(网络、后端、数据库等)
开始带人
3、高级工程师
阶段标准:
在中级工程师的基础上,具有更好的抽象能力,透过表面看本质。此时已经在开发过程中积累了相当的经验,理解也比较深入,达到了触类旁通的层次,已不局限于框架和库,甚至是前端领域的约束,可以开始自己无中生有的造轮子了。另外,更重要的是对于团队的贡献,要能够成为一个团队的主心骨,明确团队的方向,整合整个团队的力量来做事情。
阶段分析:
此时,自己已经有了多次触类旁通的经验,也就是说自己对于学习一个新知识应该深入到什么程度,已经有了一个比较明确的认知。那么此时的学习诉求便是能够高效的获取其他领域的足够深度的知识。从线到面,构建起一整套的知识系统。中级工程师只要一直积累便可水到渠成的达到这一步。不过,身为高级工程师,也要开始关注技术意外的东西了,比如过管理团队。就像一个初级工程师熟练使用了一个框架之后,要开始学习其他方面的知识一样。高级工程师也就是螺旋上升到了另一个层面,开始了另一个循环而已。到了这个层次,基本已经实现“技术自由”了,而且一定是公司里独当一面的中坚力量。整个过程需要持续3-5年的时间。
学习诉求:
高效获取足够深度的知识;管理方面的知识;业内趋势的判断;
工程技能:
架构设计(UML)
技术选型
团队开发效率提升(公共组件、Travis CI、jenkins、gerrit/gitlab/Gogs、mock等的搭建)
难题攻关
项目管理(jira、asana、tpad、禅道等)
其他常用领域达到中级水平以上(网络、后端、数据库、运维、分布式等)
开始带团队
4、技术专家
阶段标准:
在业内,要具备一定的技术影响力,以及“代表作”。所作所为可以影响整个公司,乃至整个行业。从流行的追逐者,变成了流行的创造者。当然,能力越大责任越大,公司的决策压力自然也要背负,此时已经不是管理单个团队了,而是对技术方向的全局把控,足够影响公司的战略甚至生存。
阶段分析:
首先声明,笔者肯定还没有达到这个层次,所以只能yy一下这个境界,算是笔者心目中对大牛的理解,也是一个奋斗的目标。到了这个境界,已经不能够简单的归为技术类了。就像前端高级工程师,已经不仅仅局限于前端这个领域一样。能够达到这个境界,相信已经不需要太多旁人的指手画脚了,能量已经大到足够影响上万人甚至更多。说白了,就是处于金字塔顶端少数的存在。除非转型,那么这个阶段基本可以一直干了,而且是自己挑公司,做自己想做的事,甚至自己当老板。
学习诉求:
国内外顶级article;业内痛点及瓶颈;行业及环境宏观分析;
工程技能:
技术影响力
战略级技术架构
跨部门项目推动
英语
附录
https://github.com/kamranahmedse/developer-roadmap