Files
CategoryResourceRepost/极客时间专栏/重学前端/特别加餐/加餐 | 一个前端工程师到底需要掌握哪些技能?.md
louzefeng d3828a7aee mod
2024-07-11 05:50:32 +00:00

85 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

自从开了“重学前端”这门课程,总会遇到同学反复问我这几个问题:
- 学这门课需要什么样的基础?
- 为什么你不讲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)