作为前端,推广需要什么条件?现在我在用React,是不是也要学Vue?有必要学Node.js/Flutter/functional吗?这些问题看似无关,但本质上是同一个问题。这个问题是“前端工程师需要掌握哪些技能?”其实在业界,对前端工程师的能力模型有一个基本的认知认知,不同公司的定义可能有细微差别,但其核心是一致的。这里我给一张图,就是我理解的前端工程师的技能模型。为了方便大家理解,我把这些技能放到了不同级别的前端工程师中,大家可以对比一下,找到适合自己实际情况的前端进阶路径。接下来我会一部分一部分详细说说前端技能树是如何发展的。在这里,小编建了一个前端学习交流按钮群:132667127,自己整理的最新前端资料和进阶开发教程。如果你愿意,可以进群和助理工程师一起学习交流。首先说一下助理前端工程师,benchmark是阿里的P4级别。它需要基本的编程技能。什么是基本的编程能力?我认为是能够用计算机编程语言熟练地表达任何逻辑。一般来说,在大学学习计算机科学的学生应该具备编程技能。助理工程师的定义是“能够在协助下完成工作”,所以并不是所有的公司都会招聘助理工程师,因为严格来说,助理工程师不具备独立工作的能力,他的工作产出可能是负数。但是,招聘助理工程师的公司普遍看重应聘者的潜力,期望快速成长。Engineer接下来说说前端工程师,对标阿里的P5级别。它的要求是掌握基本的前端技能。这么说可能有点含糊,但是换个说法就很清楚了。前端基本功是“综合运用HTML、JavaScript、CSS完成任何界面和交互需求”。这个“任何界面和交互要求”看似要求很高,但是如果你写过前端就知道这是任何前端的基本功——大不了用图片。其实这个级别的工程师横向跨度非常大,接口都写好了,但是兼容性是什么,代码的可维护性怎么样,能不能不用框架写,能不能做到语义分离,以及在开发过程中能否实现有效的沟通……又会产生大量的疑问。而这些问题决定了一个前端工程师的潜力。一些更好的公司在这个级别招聘工程师。除了“基本的前端技能”之外,他们还会对我上面提到的问题有要求。对于助理前端工程师和前端工程师,能力方面的要求主要是编程能力,知识方面的要求是至少有一套“可用”。高级工程师下面继续说高级前端工程师,对标阿里的P6级别。这个阶段我们可以看到图中已经开始出现了不同的block,这意味着对高级前端工程师的要求也是多元化的。让我们用一句话来概括它。需要资深的前端工程师开始关注和解决项目中的问题。什么样的问题?可能是别人解决不了的技术问题,也可能是容易出错的代码,或者是无意义的重复工作,或者是业务上想不到的合适的交互……等等。其实对高级前端工程师的要求是很自由的。我在上图中给出的只是几个例子。例如,组件化可以解决重复劳动和开发耦合问题;工具可以解决很多问题。工具提高效率,代码检查工具提高质量;性能优化会带来业务价值,这些都是高级前端工程师可以做的事情,只要做好其中一两项,就可以达到高级前端工程师的水平。还有就是这个层次已经开始要求建筑和工程能力了,但是还处于起步阶段,一些有天赋的同学凭感觉就可以达到这个层次。技术达人下面说说前端达人,对标阿里P7级别。在这一层,我们从图中可以看出,需求又不一样了。比如组件变成了组件系统,工具变成了工具链和持续集成系统,性能优化变成了性能系统。这些东西已经不仅仅是职称,也成为了工作内容。这一级别与高级工程师的主要区别在于,他们从解决单点问题转变为系统方法,从为自己服务转变为为团队服务,从一次性绩效转变为持续输出。例如,高级工程师可能会制作一些组件,然后在项目中使用它们。自己代码的可维护性提高了,复用性也更好了。但是,前端专家应该考虑制定组件规范并向团队推广,以及培训和考虑组件是如何开发、管理和下线的。高级工程师可以通过优化自己的页面来做性能,但是前端高手需要考虑收集数据、做报告和监控、总结checklist、结合工具、确定性能指标等等。由于这一层级对架构能力、工程和软技能的要求很高,所以比较难跨越。资深技术专家最后说说资深前端专家,对标阿里的P8级别。从图中我们可以看出,在这一层分离的发展方向又汇合了。资深前端专家做事,关键是审时度势。他们需要在上述前端专家所掌握的各个领域,组合出一套适合自己团队的解决方案。比如企业内部系统的前端团队可能没有那么高的性能要求,但是电商前端团队由于业务活动频繁,需要一个好的组件系统。这里很难有一定的规矩,全看人。这个级别对工程能力的要求非常高,即使没有人的高级前端专家也必须涉及一些管理能力。进阶前端的核心要素说完前端各个层级的技能模型,让我们回到最初的问题“前端工程师需要掌握哪些技能”。要回答这个问题,首先需要根据自己的情况坐好。可以看到在前端技能模型中,并没有对“知识”的硬性要求。各个公司不同的岗位可能会有一些特殊的要求,但是市场很大,学习不用上心。我为自己学不到什么知识而感到焦虑。而且,“前端知识”应该是一个垂直的模块。它不能直接帮助你更上一层楼,但可以提升你的潜能,让你在未来走得更远。现在大部分同学都会比较关注前端岗位的晋升。我觉得前端进阶的核心要素更多是看你的能力,尤其是在进阶前端高级工程师的道路上。我很看中你的编程能力、架构能力和工程能力。
