Appearance
title: 程劭非(winter)-重学前端
加餐 | 一个前端工程师到底需要掌握哪些技能?
自从开了“重学前端”这门课程,总会遇到同学反复问我这几个问题:
- 学这门课需要什么样的基础?
- 为什么你不讲Vue?
- 有必要学习Node.js/Flutter/函数式吗?
这几个问题看似毫无关联,但是其实它们本质上都是同一个问题,这个问题就是“一个前端工程师到底需要掌握哪些技能?”
其实在行业里面,对前端工程师的能力模型有一个基本的认知,不同公司的定义可能有细微差别,但是它的内核是一致的。
这里我给出一张图,是我自己理解的前端工程师的技能模型。
为了方便你理解,我把这些技能具体放进前端工程师的不同级别里,你可以对照着找到一条符合自己实际情况的前端进阶之路。下面我就一部分一部分地详细讲讲前端技能树是如何发展的。
助理工程师
**首先来说说助理前端工程师,对标的是阿里的P4级别。**它的要求是基本的编程能力。什么叫基本的编程能力呢?我认为就是熟练地用计算机编程语言表达任何逻辑的能力。一般来说,在大学学习过计算机专业的学生应该具备编程能力。
我举一个具体的例子,我们用自然语言说“从1打印到100”,在多数编程语言里的表述,是一个变量从1开始,每次循环加1,每次打印,到变量值为100时循环结束。理论上只要掌握了循环、分支逻辑,能组合出一切逻辑,这是图灵可计算理论决定的。但是理论是一回事,真想要熟练掌握,是需要经过一定训练的。这个训练,就是对助理工程师的要求。
在面试中考察这部分知识的问题往往被称作“算法题”。其实广义上的算法指我们一切完成问题的步骤,而狭义的算法则是指算法课本上几种经典的算法如分治、贪心、动态规划等。面试中考察基本编程能力,其实题目出难了就是所谓的“算法题”,出简单了就是“写段代码看看”,并没有一个明确的分界线。
助理工程师的定义是“能够在辅助下完成工作”,因此不是所有公司都会招聘助理工程师的,因为严格来说,助理工程师不具备独立工作的能力,他的工作产出可能是负数。但是招聘助理工程师的公司,一般都是看重应聘人的潜力,期望能快速成长。
工程师
**接下来我们说说前端工程师,对标阿里P5级别。**它的要求是掌握基本的前端技能,这样说也许有点模糊,但是换个说法就很明白了,基本前端技能就是“综合运用HTML、JavaScript、CSS完成任何界面和交互需求”。这个“任何界面和交互需求”,看似要求很高,但是如果你写过前端就知道,这是任何前端的基本技能——大不了用图片呗。
其实这个级别的工程师,水平跨度非常大,界面写出来了,但是兼容性如何、代码可维护性如何、离了框架能不能写出来、语义表现分离能做到吗、开发过程中能不能做到有效沟通…还会有很多问题。而这些问题,决定了一个前端工程师的潜力,一些好一点的公司招聘这个级别的工程师,除了“基本的前端技能”之外,还会对我上面提到的这些问题有所要求。
关于助理前端工程师和前端工程师,能力方面主要的要求是编程能力,知识方面的要求是一个“可用”的最小集合。
资深工程师
**我们接着往下讲,资深前端工程师,对标阿里P6级别。**到了这个阶段,我们可以看到图上开始出现不同的区块了,这意味着,对资深前端工程师的要求,也是多元化的。
我们用一句话来概括,资深前端工程师,要求开始关注并且解决项目中的问题。什么样的问题呢?可能是别人做不出来的技术难题,也可能是容易出错的代码,或者说无意义的重复劳动,或者是业务上想不出来合适的交互…… 等等。
其实对资深前端工程师的要求是很自由的,我上面的图中给出的仅仅是几个例子,比如组件化可以解决重复劳动问题和开发耦合问题;工具可以解决的问题有很多,生成代码的工具提高效率,代码检查工具提高质量;性能优化则会带来业务价值,这些都是资深前端工程师可以做的事情,并且只要把其中一两项做好,就可以达到资深前端工程师的水平。
再有就是这个级别开始对架构能力和工程能力有所要求了,但还处于萌芽阶段,一些天赋好的同学可以凭感觉达到这个水平。
技术专家
**下面说说前端专家,对标阿里P7级别。**到了这个级别,我们从图上可以看到,要求又不一样了,比如组件变成了组件体系,工具变成了工具链和持续集成体系,性能优化变成了性能体系。这些东西变得不仅仅是称呼,还有工作的内容,这个级别跟资深工程师的主要区别是,从解决单点问题变成系统性方法,从服务自己变成服务团队,从一次性发挥变成持续性输出。
比如,资深工程师可能做一些组件,然后在项目里面用,自己的代码可维护性提升了,复用也做得更好了。但是前端专家要考虑制定组件规范推广到团队,还要做培训,考虑组件如何开发、管理和下线。资深工程师做性能,把自己的页面优化好了就可以了,但是前端专家就需要考虑采集数据、做报表和监控、总结checklist、跟工具结合、定性能指标等等。
由于这个级别对架构能力、工程和软技能要求很高,所以算是比较难以跨越的。
高级技术专家
**最后来说高级前端专家,对标阿里的P8级别。**我们从图上看,这个级别分开的发展方向又聚合到了一起。高级前端专家做事的关键是审时度势,需要在前面讲的前端专家所掌握的各个领域里,组合出一套适合自己所在团队的方案。比如做企业内部系统的前端团队,可能对性能要求就没那么高,但电商前端团队因为运营活动频繁,就需要很好的组件体系,这里很难有一定的规则,全靠人来把握。
到这个级别,对工程能力的要求就很高了,而且即使不带人的高级前端专家,也必定涉及一些管理能力。
前端进阶的核心要素
讲完了各个级别的前端技能模型,我们回到最开始的问题“一个前端工程师到底需要掌握哪些技能”。
要回答这个问题,你要先根据自己的情况对号入座。梳理出自己掌握的前端知识程度,定位出自己的级别。再根据更高层级所需的知识,有的放矢,循序渐进,不断精进、完善自己的前端知识水平。
我们现在学习的“重学前端”这门课程,最重要的作用首先是构建出一个完整的前端知识架构,让你可以把自己的前端能力梳理清晰,让你意识到自己“会什么,不会什么”。如果后面再遇见了拿不准的知识点,你也可以定位好属于哪部分的哪个知识点。
有同学会问:自己对照专栏的知识架构后,好多知识点都不会,比较模糊,感觉会影响岗位的晋升,很焦虑,怎么办?
不要急,我们可以看到,在前端的技能模型里,对“知识”是没有任何硬性要求的,具体到各个公司的不同岗位,可能会有一些特殊要求,但市场是巨大的,所以大家可以不必对学什么知识不学什么知识感到那么焦虑。
现在大部分同学会更为注重前端岗位的晋升,我认为想要真正实现前端岗位的晋升,更多还是要看你的能力,尤其是在工作中非常重要的编程能力、架构能力和工程能力,这些都是前端工程师必备的“内功”。
而且“前端知识”应该是一个垂直的模块,它不能直接帮助你进阶下一个更高的级别,但是它能提升你的潜力,使你未来能走得更远。
我现在也在从教育的视角,结合自己多年的前端一线经验,尝试一种更为直接有效的课程形式,帮助大家提升能力、实现进阶。去年,我和极客大学联合举办了第 0 期线下的「前端训练营」,得到了同学们很好的反馈,也恰恰验证了我的观点,“前端能力是可以培养的,这比单纯学习框架要重要得多”。
今年我和极客大学又重新设计了线上版的**「前端进阶训练营」** ,课程设计深度对标阿里 P6 技能模型,延用班主任、助教、作业、评分、毕业、研讨等多种学习形式和服务。针对不同基础的同学,课程增加了前端基础知识的讲解,以及组件化、工具链、发布与持续集成这三条大厂进阶的关键路径。
我依然会把重点放在前端工程师能力培养上,希望教你知识怎么学,并且通过线上刻意练习的方式,帮助你提高编程、架构和工程能力。
欢迎你来参加。