
自从开了“重学前端”这门课程，总会遇到同学反复问我这几个问题：

- 学这门课需要什么样的基础？
- 为什么你不讲Vue？
- 有必要学习Node.js/Flutter/函数式吗？

这几个问题看似毫无关联，但是其实它们本质上都是同一个问题，这个问题就是“一个前端工程师到底需要掌握哪些技能？”

其实在行业里面，对前端工程师的能力模型有一个基本的认知，不同公司的定义可能有细微差别，但是它的内核是一致的。

这里我给出一张图，是我自己理解的前端工程师的技能模型。

<img src="https://static001.geekbang.org/resource/image/e0/92/e0c654fa7cf5f63cdcca1b6c51008992.jpeg" alt="">

为了方便你理解，我把这些技能具体放进前端工程师的不同级别里，你可以对照着找到一条符合自己实际情况的前端进阶之路。下面我就一部分一部分地详细讲讲前端技能树是如何发展的。

## 助理工程师

**首先来说说助理前端工程师，对标的是阿里的P4级别。**它的要求是基本的编程能力。什么叫基本的编程能力呢？我认为就是熟练地用计算机编程语言表达任何逻辑的能力。一般来说，在大学学习过计算机专业的学生应该具备编程能力。

我举一个具体的例子，我们用自然语言说“从1打印到100”，在多数编程语言里的表述，是一个变量从1开始，每次循环加1，每次打印，到变量值为100时循环结束。理论上只要掌握了循环、分支逻辑，能组合出一切逻辑，这是图灵可计算理论决定的。但是理论是一回事，真想要熟练掌握，是需要经过一定训练的。这个训练，就是对助理工程师的要求。

在面试中考察这部分知识的问题往往被称作“算法题”。其实广义上的算法指我们一切完成问题的步骤，而狭义的算法则是指算法课本上几种经典的算法如分治、贪心、动态规划等。面试中考察基本编程能力，其实题目出难了就是所谓的“算法题”，出简单了就是“写段代码看看”，并没有一个明确的分界线。

助理工程师的定义是“能够在辅助下完成工作”，因此不是所有公司都会招聘助理工程师的，因为严格来说，助理工程师不具备独立工作的能力，他的工作产出可能是负数。但是招聘助理工程师的公司，一般都是看重应聘人的潜力，期望能快速成长。

## 工程师

**接下来我们说说前端工程师，对标阿里P5级别。**它的要求是掌握基本的前端技能，这样说也许有点模糊，但是换个说法就很明白了，基本前端技能就是“综合运用HTML、JavaScript、CSS完成任何界面和交互需求”。这个“任何界面和交互需求”，看似要求很高，但是如果你写过前端就知道，这是任何前端的基本技能——大不了用图片呗。

其实这个级别的工程师，水平跨度非常大，界面写出来了，但是兼容性如何、代码可维护性如何、离了框架能不能写出来、语义表现分离能做到吗、开发过程中能不能做到有效沟通…还会有很多问题。而这些问题，决定了一个前端工程师的潜力，一些好一点的公司招聘这个级别的工程师，除了“基本的前端技能”之外，还会对我上面提到的这些问题有所要求。

关于助理前端工程师和前端工程师，能力方面主要的要求是编程能力，知识方面的要求是一个“可用”的最小集合。

## 资深工程师

**我们接着往下讲，资深前端工程师，对标阿里P6级别。**到了这个阶段，我们可以看到图上开始出现不同的区块了，这意味着，对资深前端工程师的要求，也是多元化的。

我们用一句话来概括，资深前端工程师，要求开始关注并且解决项目中的问题。什么样的问题呢？可能是别人做不出来的技术难题，也可能是容易出错的代码，或者说无意义的重复劳动，或者是业务上想不出来合适的交互…… 等等。

其实对资深前端工程师的要求是很自由的，我上面的图中给出的仅仅是几个例子，比如组件化可以解决重复劳动问题和开发耦合问题；工具可以解决的问题有很多，生成代码的工具提高效率，代码检查工具提高质量；性能优化则会带来业务价值，这些都是资深前端工程师可以做的事情，并且只要把其中一两项做好，就可以达到资深前端工程师的水平。

再有就是这个级别开始对架构能力和工程能力有所要求了，但还处于萌芽阶段，一些天赋好的同学可以凭感觉达到这个水平。

## 技术专家

**下面说说前端专家，对标阿里P7级别。**到了这个级别，我们从图上可以看到，要求又不一样了，比如组件变成了组件体系，工具变成了工具链和持续集成体系，性能优化变成了性能体系。这些东西变得不仅仅是称呼，还有工作的内容，这个级别跟资深工程师的主要区别是，从解决单点问题变成系统性方法，从服务自己变成服务团队，从一次性发挥变成持续性输出。

比如，资深工程师可能做一些组件，然后在项目里面用，自己的代码可维护性提升了，复用也做得更好了。但是前端专家要考虑制定组件规范推广到团队，还要做培训，考虑组件如何开发、管理和下线。资深工程师做性能，把自己的页面优化好了就可以了，但是前端专家就需要考虑采集数据、做报表和监控、总结checklist、跟工具结合、定性能指标等等。

由于这个级别对架构能力、工程和软技能要求很高，所以算是比较难以跨越的。

## 高级技术专家

**最后来说高级前端专家，对标阿里的P8级别。**我们从图上看，这个级别分开的发展方向又聚合到了一起。高级前端专家做事的关键是审时度势，需要在前面讲的前端专家所掌握的各个领域里，组合出一套适合自己所在团队的方案。比如做企业内部系统的前端团队，可能对性能要求就没那么高，但电商前端团队因为运营活动频繁，就需要很好的组件体系，这里很难有一定的规则，全靠人来把握。

到这个级别，对工程能力的要求就很高了，而且即使不带人的高级前端专家，也必定涉及一些管理能力。

## 前端进阶的核心要素

讲完了各个级别的前端技能模型，我们回到最开始的问题“**一个前端工程师到底需要掌握哪些技能**”。

要回答这个问题，你要先根据自己的情况对号入座。梳理出自己掌握的前端知识程度，定位出自己的级别。再根据更高层级所需的知识，有的放矢，循序渐进，不断精进、完善自己的前端知识水平。

我们现在学习的“重学前端”这门课程，最重要的作用首先是构建出一个完整的前端知识架构，让你可以把自己的前端能力梳理清晰，让你意识到自己“会什么，不会什么”。如果后面再遇见了拿不准的知识点，你也可以定位好属于哪部分的哪个知识点。

有同学会问：自己对照专栏的知识架构后，好多知识点都不会，比较模糊，感觉会影响岗位的晋升，很焦虑，怎么办？

不要急，我们可以看到，在前端的技能模型里，对“知识”是没有任何硬性要求的，具体到各个公司的不同岗位，可能会有一些特殊要求，但市场是巨大的，所以大家可以不必对学什么知识不学什么知识感到那么焦虑。

**现在大部分同学会更为注重前端岗位的晋升，我认为想要真正实现前端岗位的晋升，更多还是要看你的能力，尤其是在工作中非常重要的编程能力、架构能力和工程能力，这些都是前端工程师必备的“内功”。**

而且“前端知识”应该是一个垂直的模块，它不能直接帮助你进阶下一个更高的级别，但是它能提升你的潜力，使你未来能走得更远。

我现在也在从教育的视角，结合自己多年的前端一线经验，尝试一种更为直接有效的课程形式，帮助大家提升能力、实现进阶。去年，我和极客大学联合举办了第 0 期线下的「前端训练营」，得到了同学们很好的反馈，也恰恰验证了我的观点，**“前端能力是可以培养的，这比单纯学习框架要重要得多”**。

今年我和极客大学又重新设计了线上版的**「前端进阶训练营」** ，课程设计深度对标阿里 P6 技能模型，延用班主任、助教、作业、评分、毕业、研讨等多种学习形式和服务。针对不同基础的同学，课程增加了前端基础知识的讲解，以及**组件化、工具链、发布与持续集成**这三条大厂进阶的关键路径。

我依然会把重点放在前端工程师能力培养上，希望教你知识怎么学，并且通过线上刻意练习的方式，帮助你提高编程、架构和工程能力。

欢迎你来参加。

[<img src="https://static001.geekbang.org/resource/image/76/f3/7629623563c0aa06b5725215112308f3.png" alt="">](https://u.geekbang.org/subject/fe/100044701?utm_source=time_app&amp;utm_medium=cxqdjiacan&amp;utm_term=timeappcxqdjiacan)
