前言
前段时间跟一位前辈聊到前端职业发展该怎么去规划这个问题。他说到的其中几个点我觉得非常好:
- 第一是要有清晰的自我认知,知道自己在一个团队或者在一个项目中能发挥怎样的价值,不骄傲自大也不要妄自菲薄;
- 第二点是无论做什么都需要勇于承担,不要害怕任务艰巨自己无法完成,做得越多你收获的也将越多。当然不是指一些机械重复的完成任务,要带着自己的思考;
- 第三点是任何事情都需要规划,任何的能力和价值的养成都是阶段性的积累,在正确的阶段做正确的事,计划对应阶段,每个阶段做每个阶段该做的事,你的提升和成长才是最快的。
第三点我尤为认同,也跟他深入聊了一下关于前端开发的职业生涯分哪些阶段,在每个阶段应该做什么样的努力。
第一个阶段:入门阶段(1-3年)
阶段目标:这个阶段我们的目标就是对纯前端的内容能有一个清晰的认知。能够无障碍找工作,四五次面试能拿到2-3个offer。
入门阶段,就是刚刚入行不久,对前端开发有一点认识,会用基础的前端技术和简单使用前端框架。这时候也能开发业务,但也仅限于开发业务 —— 俗称“页面仔”、cv工程师。这个阶段初期开发的大部分时间在面向搜索引擎。
这个阶段对前端的认识很不全面,技术上既没有广度也没有深度。前端相关的东西都知道一些,但是如果真正深入去聊的话会发现是一知半解。去面试时什么都能说上两句,但是一旦面试官多问两句就会变得支支吾吾。技术栈不够完善和系统,学到的和用到的知识没有整合起来,学的东西大多只是为了当前工作开发去学,工作过程中也只是完成就行,不会想为什么这么做,或者不会想更好的解决方式去完成业务。
那么处于这个阶段该做些什么呢?
- 从任何地方汲取前端相关的知识,包括但不限于:视频教程、技术书籍、博客;
- 把前端的相关技术和基础详细了解清楚,垂直方向深入。搞清楚前端是做什么的,完成不同的前端工作有哪些方案可以选;
- 了解各种框架的本质区别,不要求全部框架都精通。做到“一专多熟”,选一个自己常用或者自己感兴趣的框架深入学习,深入一点了解某个框架,做到这个框架无障碍使用,有条件最好能了解一点框架源码;
- 了解http协议相关知识、浏览器相关知识。
第二个阶段:全面发展阶段(3-5年)
阶段目标:扩展自己的知识面,对项目结构、项目的周期、研发周期等这些上层的东西有一定了解,慢慢了解接触管理工作。
这个阶段业务已经写得很熟练了,对自己工作的行业有了一定认识,再去同行业得公司工作时,积累的行业知识开始发挥作用,能结合自己对行业的了解和业务去进行开发,也有一定的技术广度和深度,能独立完成项目的构建和一些基本架构,对业务需要用到技术能进行一定的选型。
在这个阶段我们有应该做哪些努力呢?
- 扩展知识面,比如:后端、服务器、开发工具等方面的知识;
- 学习webpack、docker、Linux等,能够对整个项目的构建过程有一个比较清晰的认识,能从零独立搭建项目;
- 提升自己的一些软技能,比如:表达沟通、时间管理等;
- 对于自己工作的行业,可以做一些深入了解,了解自己工作的行业中,前端开发有哪些共性和特点,怎么结合行业特点和业务去完成开发工作。
第三个阶段:高级前端开发 / 前端leader(5-7年)
这个阶段你已经属于高级前端开发工程师了,这时候一般有两个方向:
- 对于喜欢搞技术,不喜欢管理掰扯的人,你是团队中的主程,前端团队中的主力开发,负责团队项目的架构方面的东西,或者一些开发难点的攻坚;
- 另一个方向就是,团队的管理者,管理一个前端开发团队,负责项目的整体规划和开发进度的把控。
到这个阶段的前端各方面都已经非常成熟了,有完善的前端知识体系,整体项目中,不管是前端部分、后端部分或者一些部署运维的东西,都有比较好的了解,能够同各个环节同事进行对接协调。
那么到了这个阶段,我们还要做些什么呢?
- 这个阶段,你应该对整体的前端有比较系统的认知,这时候你工作基本都是管理,管理项目或者团队;
- 应该有自己的作品或者产出:不论是开源作品、博客或者插件等都可以;
- 收入不单单依靠工作薪资,你对前端开发或者你工作的行业都有自己比较清晰系统的认知,这时候你可能会有自己的相关副业(这个因人而异)。
第四个阶段:前端架构 / 团队领导(7-10年)
到了这个阶段,如果你还在前端行业,那么你要么是一个行业大牛,要么是团队领导。这个阶段的工作方向就是管理和架构方向。当然如果你只是想有份工作,随便做做前端有点收入,保持躺平状态那就不在这些范畴了。
一些建议
- 学好JavaScript原生的知识。如果你想长期从事前端工作的话,掌握好JavaScript是一切的基础,不管是对于你学习其他技术还是框架来说都是这样;
- 养成多看源码的习惯。看不同框架、库等的源码可以让我们更多地了解别人是怎么写代码的,学习别人写的思想和方法,这些思想和方法你会发现在很多地方都是通用的;
- 可以的话参与一些开源项目,或者自己做一些开源的东西,再或者可以保持写博客的习惯,这些都能更好的帮助自己更好的掌握和梳理自己的技术栈;
- 避免做重复的事,多封装和抽离,不管是方法还是组件。长期保持你后边做项目会非常有效率。
写在后面
那么我们怎么判断自己当前阶段是否做得还不错呢?
- 去面试,看自己在面试对应阶段的岗位过程中是否顺利,能否比较高比例地拿到offer。
你觉得自己属于哪个阶段?
你觉得每个阶段我们有没有更好的方法去提升自己?