Skip to content

Latest commit

 

History

History
331 lines (174 loc) · 43.1 KB

Transcript.md

File metadata and controls

331 lines (174 loc) · 43.1 KB

大家好,今天的live主题是分享一下《前端工程师职业规划》这个主题,主讲人是我,但是我还是把主演写成了芋头和jasin yip,jasin yip真名叫叶俊星,芋头是在杭州大搜车担任前端leader,架构师,叶俊星则是在美团担任资深前端开发工程师,他们两位都是知乎比较活跃的前端领域问题回答者,也有着丰富的职场经验,相信在我分享完毕后,通过我们的QA和问答,他们能给大家带来非常多的职场启发。

ok,那么我就正式开始我们今天的主题,第一部分,我给大家简单说说我感性和理性上对前端工程师的职场规划的一些见解。

大纲:

开始之前我们回顾一下,我们这次live的一个大纲,能够帮助大家解决什么问题。

一共6个部分,循序渐进的把我的一些对前端职业的理解一一道来。

在第一个部分,我会讲解一下前端工程师目前的一个职业现状和前景,前端开发本来就是一个比较新的职业,他的发展非常快,而且技术更新迭代也非常快,从2010年之后才开始有的这个岗位名称,我印象里还是淘宝第一次有了这个岗位分工,在很久以前,前端岗位其实都是由后端开发和设计师一起完成的,早些时候,前端的工作也非常简单,页面交互也不复杂,web1.0的时代前端经历了几个阶段,从css1.0到2.0,从table布局到div+css,后来经过标准和浏览器的升级进化,js经历了几个utils类型的框架库的演变,从prototype,moontools,dojo,yui时代到jquery1.0,2.0时代,再到css2.0到3.0,再到javascript的es3升级es4,甚至后来的es5到es6,每一个工程师的技能树都是跟随着浏览器和标准的进化而进化,设计模式和前端模块化还有前端工程化从2012年开始步入历史舞台,requirejs,seajs等,还有grunt,gulp,到后来browserify,rollup,webpack等等,而从2013年开始兴起的mvc,mvvm,从最开始的backbone到angularjs到react,再到现在国内非常火爆的vue,前端工程师这个岗位每天,每周,每个月的技术都更新迭代的非常快。这就是目前前端开发工程师面临的一个职业窘境,包括对前端人员的全栈技术要求,用户体验,甚至审美要求都是越来越高的,前端开发行业未来的前景到底如何,在这一部分会给大家一个引导。

第二个部分,前端工程师的专业能力差距在哪,为什么我是初级前端,你就是中级前端,我是架构师,他就是资深开发,当然除了公司不同,分级不同之外,是否有统一的行业标准来规范这些专业能力层级呢?如何弥补这些差距呢?一个前端工程师到底需要掌握什么才算是合格的前端工程师?在这一个章节我会给大家带来我的一些看法。

第三个部分,从我入行以来,前端工程师的学历,专业背景都是一个迷,学校没人教,单位没人带,完全靠野生路线自由发展,我身边有设计师转的,有学法律的,有学语言的,有学医的,也有学管理的,也有计算机专业的,基本上是各种你能想到的专业都有成功转型前端开发工程师的案例,不同背景的人,应该如何入行,他们对自己每个阶段的定位又有什么差别?在这一章节会给大家带来几个我身边的案例,和我自身的一些经验。

第四个部分,前端如何少走弯路,说白了还是要有学习方法论,针对前端开发行业,什么样的方法论最适合你自己,肯定都要结合每个人不同的背景和经验,但是还是会有一些可以抽象出来通用的方法,我在这个章节会给大家分享一下我学习的方法论和经验,以及帮助大家找几个典型的例子或者我每一个阶段学习的方法论给大家举例。

第五个部分,职场晋升,我们分2个部分来说,第一部分就是那些不正规的小公司,没有职级评审,如何在这种环境下晋升自己,还有一个就是在大厂中,有标准的职级体系,给大家揭秘大厂中职级晋升的套路和标准以及方法论,还有我也有幸参与过一些公司内部的评审,也会以我个人经历来给大家分享一些经验。

第六部分,我会给大家分享一下,我是如何给自己进行职业规划的,这也是面试时很多面试官会问的问题,最后还会邀请芋头和叶俊星进行他们的职业规划分享。

最后,我还给芋头和叶俊星每个人准备了5个题目,让大神们给我们解答一些,我认为对大家帮助较大的问题,当然也包括回答大家开始前后的一些QA。

part 01:

现在开始第一部分啦,说到职业,那么肯定是以公司为单位,公司里又以团队为单位,那么一个前端团队就是前端工程师的职场,在团队中团队的阶梯决定了你的职位高低,薪酬高低,包括专业能力的高低,负责的业务和技术的偏向,这对于做过team leader的人来说还是比较好了解的,发展瓶颈也很简单理解,当你处在一个前端团队中的时候,不同阶梯中的工程师如何跨域当前层次,就是你的发展瓶颈。

第二页:

从团队的角度来划分,一般的团队分为初中高,资深专家,架构师,项目负责人这几个通用的阶梯吧。

每一个阶段的开发人员,很多公司划分起来都是不一样的,有些公司硬性规定工作年限,有些公司可能放宽工作年限,更多以在公司内部的贡献来分层,俗话说的拿苦劳来堆,还有的公司比较随意,老板说你是什么就是什么,一般这是在小团队,还有一些大厂,无法人治的时候,则会使用技术委员会的方式进行职级评审,或者在面试的时候就决定了你的职级。基本工程师的分级机制的由来就是这几个手段。

所以不难看出,在技术扎实的前提下,工程师在一家公司的职级和职业发展好坏,技术能力仅仅只是系数之一,而不是100%。更多的人可能是靠运气,或者耐心,或者影响力得到的高职位,或者说,一些人更喜欢表现自己,领导更能发现自己,才得以晋升步步高升。这是职场现状,其实不仅仅在前端,任何团队,技术的非技术的,都会是这样,但是技术岗位,技术能力是准入门槛,门槛相对高而已。

而具体每个岗位的能力模型,我会在第二个部分,详细讲解,这一部分只说职业现状相关。

从阶梯角度来看,发展瓶颈我个人认为分几个维度的评判标准,前端的技术能力可能是50%,后端能力可能25%,业务综合素质能力可能又是25%。这也是为什么,有些人会很困惑,这哥们某一方面的技术深度并不如我,但是为什么他管理我,而不是我管理他,因为团队属性决定了,你要和外部团队交流,有技术,有运维,有产品,有运营,如果只是在前端某个技术领域专精,比如性能优化,比如前端模块化,比如代码抽象,设计模式,甚至说我对nodejs的每个API都非常熟悉,团队里没人比我还厉害了,我做运营活动页又快又bug少,我在team中最会和产品撕逼,再或者说我对代码重构非常了解,或者我对如何编写一个视频播放器,尤其是编解码部分的细节实现原理无人能及,再比如说我是架构组的核心人员,我专门给大家提供抽象的web组件或者插件。

每一项专精领域的能力只是你立足团队中的基石,甚至说,leader对你的预期就是这样,T字形人才的发展,都是深度和广度并重的,这也是为什么新人,专精了某些技术后,浮躁的表现之一,但是把你换一个领域,你就歇菜了,初中级别可能这样就算ok,但是中高级和资深前端,一定都是T字型的,在某一领域专精,其他领域和综合素质又非常优秀,把他扔到一个没接触过的行业中,也能快速给出解决方案的人,这些能力可以锻炼吗?肯定是可以的,比如后端能力,业务能力,通过看书自学,或者和兄弟部门进行交流甚至启一些业余项目都是可以锻炼自身能力广度的方式。

目前前端职业现状就是,精通一门的人少,精通多门的人更少,有业务能力的那就更更少了。所以这也是为啥初级前端不好找工作,中高级前端又迷茫自己无法晋升,高级前端根本招不到的一个现状。

很多公司在招聘的时候,软技能和项目经验可以快速帮你建立职场优势,比如你在linux下可以无阻碍开发,比如你之前有过相关领域项目经验,很多业务是之前上一家公司都做过的业务,上手起来领会需求非常快,一些名词不需要给你再科普。再还有就是沟通能力,无论是团队还是朋友,或者情侣,也没人愿意找一个闷葫芦一起工作。回想一下,你的领导比较信赖的下属或者重点提拔的下属,哪一个是半天打不出一个屁的主?

最后说一下前景,前景分两个吧,有些人觉得前景就是钱景,money,有些人觉得做自己喜欢的事,能够锻炼自身技能,钱不钱无所谓,我是个富二代。每个人对前景的定义都不相同。我分2个层次来理解,想获得职位,money的人,性格不保守,可以选择创业公司的一些岗位,性格保守的可以选择在大公司走正常晋升路线,技术管理都可以。而想获得改变世界能力的这部分工程师,性格保守的可以选择自己业余维护开源项目或者个人项目保持自己的成就感,激励自己前行,性格偏激点的可以找人合伙创业,技术创业等。

回到一开始说的,如何突破瓶颈决定了你能够接触和看到的前景到底是什么样,每个人阶段不一致,看事情和做决定都会千差万别。我举个实际的例子,你先画一个圆,代表你的所有能力,类似一个饼图(我可以拿纸笔画一下,反正直播),然后你想你的这个圆原来越大,那肯定要在你所有能力下,先有一个点的突破,这也就是叫 深度优先,当这个深度突破了你之前的深度时,你就会发现新的世界,那么瓶颈也就自然突破了,整体能力就会有一个对应的提升方向。

还是拿前端举例,我们对代码重构非常感兴趣,买了几本重构的书,代码大全,设计模式,函数编程,深雕细琢的系统学习之后,我突破了我之前代码组织的能力,那么我可能就像手里拿了一个锤子,看什么代码都想重构钉一下,钉完了会发现,哎,我对整个代码的流程又有了新的认识,在重构的基础上完成了几个性能上的优化,哎?好像貌似我在重构的时候还可以重构一些测试用例?代码注释,哎,代码注释是否可以拿工具生成?顺便又了解了一下jsdoc相关的内容,重构了几个同事的模块或者自己以前的模块,发现有不好的地方,又是一次学习。可能你会说,那你的意思就是去学重构呗?当然不是,我再举个例子,比如说一个前端从来没写过curd的后端接口,他可能就不太会理解,为什么要做前端静态化,因为他不知道接口背后的逻辑是要去拿缓存,缓存不命中的时候,要去读数据库,数据库nosql和关系型数据怎么选型等等一系列知识,他可能看后端,就是一个黑盒,那么肯定不理解静态化和非静态化本质的好处,减少消耗最好的办法就是什么数据都缓存起来,当数据有变化的时候通知到缓存做更新。如果理解了这些,那么前端的什么自定义事件啊,全局广播啊,不都是换汤不换药么,反之你理解了前端的通知,理解起来后端的通知,就会更好理解一些。

说了这么多还是,突破技术瓶颈,能力瓶颈的方法,就是深度优先,当深度深入到一定程度,广度自然出现在你眼前。

对前端工程师的职业现状分析和前景,以及如何突破瓶颈部分我就先说这么多。

part 02

前端工程师的专业能力差距,其实说白了,就是专业能力模型,上面说了现状和如何突破瓶颈的问题,下面说一下具体的前端能力模型,素质模型。

第二页:

前端工程师的能力和素质模型我分了4个部分,其中包含了前后端的能力关键点,再一个一个说明之前,我先看一下,之前我给我自己部门的同学指定的一个分级要求:(见项目两个xlsx)

我们过完这2个对工程师的一些能力模型的标准要求后,应该就对我所说的这4个方面,前端,后端的开发能力,运维能力,协作能力,软技能,以及对行业的影响力,有一定的理解了。不同的公司和团队,能力模型要求都不一致,但是我列举的这2个例子,希望大家能够理解其中公司对人才的要求,以及大家专业能力最后产生的价值,对公司的体现,以及公司对你能力的认可,结果反馈是在什么地方,有一个初步的思路了。

part 03:

不同背景下的前端工程师如何自我定位和成长,这是一个非常有意思的话题,我简单归类了几个角色给大家看一下:

1,非科班的初学者,或者跨行业想进入前端领域的人,没什么计算机背景,没接触过编程的人。

其实我也算是这一类人的一个典型,我大学是学艺术的,虽然专业是平面设计,也有设立网页设计这门课程,但是其实和现在定义的前端开发工程师来说,那时候学的东西简直什么都不是。

这一类的人如何给自己一个正确的定位呢?我觉得通用性的我们分析下来,如果把前端当成自己的一门吃饭手艺,那快速切入这个领域的还是css+html,我不建议上来就学javascript,后端语言这一类的东西,虽然很多人说,这样你根本找不到工作,但是我没什么太好的办法,这一类人从一开始就输在起跑线上了,无论你是去培训机构,还是自学看教程,这是必须认清的一个现实,通过学习简单的css和html,可以快速的在文本编辑器里开发出在网页里现实的各种内容,通过不同的标签和样式,实现之前从来没接触过网页制作的人看来非常有意思的效果,比如一个表单,比如图文展示,比如简单的一个静态的个人介绍,甚至个人网站。如果觉得自己对这个有兴趣,喜欢,爱好,那么下一步才是开始深入的学习,如果不感兴趣,快速止损也是不错的。

接下来就是正式入门,看了一些html和css的简单教程,搞定了开发环境,或者说装好了subline或者dreamwear这一类工具后,我建议没基础的初学者几个取巧的学习方法。

1,找带入门教程字样的视频,培训课程,书籍等,只看目录。看上7 8个之后,找到他们的并集,确认真正的入门目标。

2,去招聘网站,看用人单位的招聘需求,记住只看初级岗位,只看小公司,甚至只看二三线城市的公司(不是人人都在北上广),看一下美工,网页制作,或者前端初级程序员的招聘要求,找到他们的并集,确认真正的求职要求你掌握的技能树。

3,确定了要学习的目标和求职目标,开始把每一个不懂的名词,全部汇总起来,一个一个的通过搜索引擎,了解掌握他们的意思,也许一时半会理解不了,但是看个大概应该可以,切记,搜索的时候带上,入门,新手,深入浅出,等字样,这样搜到的内容多半你都能看懂。

4,买书,纸质的,我这里推荐一些实战型较强的书,当然,选书之前也要记得看书评,看目录,对比不同入门书籍的目录,找到并集最多的那一本,买来看。

5,通过概念和名词解释上的第一印象,结合书,教程,视频进行demo练习。

6,学习photoshop的使用方法,下载一些网页psd的素材,进行『网页制作』的练习,从静态网站开始。

7,下载主流浏览器,测试兼容性,掌握css hack的用法,看一些css布局的教程,看见一个网页就琢磨他是怎么布局的,f12打开看看实现原理。 大概经过这么一系列的练习,我相信一个非科班,初学者,哪怕不报培训班,也能够在短时间内掌握网页制作这一项技能(大概1-4周)看天分了,也许有人2星期就能达到这个程度。

然后呢,我建议有精力的同学,学习一下javascript的基本语法和jquery的用法,然后就可以去试着投简历了,我这里需要说明的是,简历投递的技巧。

如果你是应届生或者在读学生,直接去找实习就好了,我不推荐大家去bat投实习,因为既然你是一点基础都没有学习前端开发,以临时抱佛脚的方式学习,面试上bat的实习生岗位基本没戏,我当年也是,根本想都没想过能进百度,阿里。那些单位只是传说,我非常实际的给自己一个定位,找到一个工作先干着。

我觉得以我个人的经历来说,这是最优的方案了。我相信在2-3线城市,一个能够快速实现静态页面切换成html的应届生找一份实习或者兼职或者页面重构的职位是不难的。如果你还会一点js的基础外加一些jquery的用法,我相信只要姿态低,找一份糊口的工作是可行的。

以上的方法我在这里强调下,只适用于非科班,没计算机编程基础,完全跨行业转行的同学,算是一项保底的方案。

然后我们来说一下非应届的跨行业转型的一些入门方法论。

真是不凑巧,我刚毕业的时候实习确实是网页制作,切页面,但是我做了几个月就不干了,回了老家我还是做了学校教的专业,一个做印刷的小公司做传统广告美工。

所以到这里,基本上可以开始下一类人的玩法了,我当初ps玩的非常6,我相信设计师这些肯定都是基本功,网页设计和平面设计的区别其实非常简单,1是字体的使用,2是排版的方式,这些互相转换起来是非常快的。只不过可能设计师不知道,如何把ps里的图和字,线转换成代码而已。

这里不重复,重复上面的1-7步骤,他同样适合UI设计师,平面设计人员,我当时也是,在老家做了一个月的广告设计工作后,投的第一家公司是一个做企业外包站的公司,面试题目非常简单,给了我一个需求,1小时做一个详情页,拿ps画,然后再1小时制作成静态网页。

我相信如果是做设计的,第一步非常简单可以做到,第二部的话,通过之前说的明确目标练习,也是非常容易达到的。

所以说,在某些公司,页面设计和静态页面开发还是会集合在一个工种上的,当然我说的这是一些小城市,小作坊公司。

如果是正规点的公司的话,只需要掌握常见的一些效果插件用法和css布局技巧,切图技巧,找个待遇低,没什么发展前景的工作还是可以的。

ok,后端开发和科班计算机的同学再往后放一放,他们的定位和成长路线和上面说的野路子完全不一样。

当你找到了一份真正的实际的前端工作时,无论是美工也好,页面开发也好,还是初级前端开发工作也好,这是你其实才是你职业生涯的第一站。

后续的你会非常的痛苦,这个阵痛过程可能持续1-6个月不等,到什么时候结束呢,说白了,当你觉得你制作页面的时候基本不用过脑子,现成的网上常见效果都能找到js插件实现,浏览器兼容经过正式线上产品检测,移动端和pc端都有过开发经验后,感觉自己需要开始javascript的学习时,基本你就从一个美工入门到目前大家嘴里说的,入门级前端开发工程师了,或者说初级前端开发工程师。

熬到这一阶段的人,一般是2级分化的,我见过切页面切上5 6年的,我也见过js一学就学好几年,也入不了门的人,我相信大家身边也有这样的人,而且其实不在少数,我怎么评价他们呢,其实也不能怪他们,毕竟不是每个人都适合这个行业,他们被淘汰只是时间问题,可能5年,可能10年,网页制作,我认为,迟早会成为一门像excel或者ppt制作一样的技能。

好了,不说这么悲伤的话题了,当你度过了学习javascript的初级阶段时,我觉得这时候,这个定位的人,他既有实际的工作经验(切页面经验),职场沟通技巧(团队配合),常见的代码管理工具和一些css压缩性能优化的常识,一些基础的javascript知识,会使用jquery或者vue开发简单的业务模块,对浏览器一些新特性,移动端新特性有所了解。

好了,这时候基本就是一个准标准职场初级前端开发工程师了,这时候可能需要1年或者一半年的时间,但是蜕变一定是非常明显的。

师父领进门,修行在个人,从初级到中级到高级,这些等我说完后端入门前端的一些套路之后,我统一一起讲解。

ok,我们回到起点,你现在是一个有过4年科班经验的计算机专业的学生,或者有过1-2年后端开发经验的后端语言程序员。

我们分析,你拥有的优势是什么,相比较小白来说,你可以直接跳过HTML和CSS的入门学习部分。可以直接跳过javascript的基本使用方法上,只需要关注语法糖部分和浏览器API上,而且你的学习能力应该是非科班的至少3-4倍以上。

相比较UI设计师来说,你的ps功底,或者说艺术细菌可能低到令人发指,当然也有艺术细胞好的计算机系同学,掌握ps这个软件我觉得肯定是分分钟的事,找几篇教程,下载一些psd模板,对着书苦练几天,我觉得也不是一个非常难的事情。

在校学生应该大概在个把星期的时间就可以彻底掌握上面我说的非科班学生可能需要半个学期掌握的东西,然后你还会占据数据结构,算法,计算机原理,高等数学的专业优势。

所以和非科班同学来相比,科班同学只要大学不天天王者荣耀,真的是太幸福了,毕业可以直接碾压很多非科班同学,如果你身边有很多非科班的前端工程师,一定替我抱抱他们。。哈哈。

所以总结一句话,科班生找it行业工作,优势很大,是必须直面的一件实事。如果你够努力,够有兴趣,大三,或者大二的你,可以尝试去冲刺bat或者一二线互联网公司的校招岗位,面过了是好事,面不过也可以轻松进入一些较正规的企业,缩短在那些不专业的公司和团队浪费的时间。

后端工程师就更吃香呢,因为相比较学生来说,项目经验和实战经验你最大的优势,你需要的只是在公司内部,协调和一个前端开发工程师,进行工作内容的稍许交换即可。经过几次实战的洗礼,完全可以快速在公司内部转岗或者去面试新的岗位。

但是还是会有许多的坑,比如对photoshop的练习需要下一些功夫,对javascript的原型理解需要下一些特殊的功夫,对于第一语言不是js的同学来说,其他语言的直观面向对象的写法,到了js会比较绕,需要多跟专业前端交流和code review。最后就是对细节的把控能力,我不是脸谱化各位,只是我见过很多理科生,后端工程师对前端交互的细节,兼容性,一像素的执着,等这些点不够有把控能力,或者不care,导致去做了后端开发。

好,现在不同背景的同学,我们现在都站到了同一起跑线了,我们都是初级前端开发工程师。

我们如何从初级晋级到中级?从中级晋级到高级,甚至资深呢?

下面我们可以开始我们下一个章节了,找到最适合自己的技术学习路径。

part 04:

找到适合自己的学习路径,明确路径方向,什么是明确路径方向呢?

我也准备一些方法论教给大家,主要是4个明确,我逐一讲解。

明确领域:

根据自身所在的领域或者自己感兴趣的行业领域,进行技能和成长的抽象提炼。

我举例子,电商行业,可能需要你掌握支付相关的前端流程实现,购物车,购物详情页(评论组件,商家端的富文本编辑器,sku面板,放大镜,web版IM),商品多级关联搜索,搜索提示,商品订单正反向流程。

除了这些可能你还需要知道,大量的促销活动,前端如何支持那么多的活动页面,一些促销或者活动的cms相关的开发,甚至(cms本身的开发),或者静态活动页面的通用组件管理方式。

广告相关的前端技术,埋点收集统计相关的前端技术等等和电商相关的一些必备的属于电商行业比较独有的一些技术解决方案,尤其是前端的。

再举例子,社交相关的,对图片,图床相关的功能开发,比如瀑布流的实现,比如图片查看器的实现,比如长文微博的实现,当然也包括富文本编辑器的实现,各种评论组件加feed流的实现,同样通用的,广告投放,数据收集,用户识别追踪,多图上传的实现,sso的实现等。

当然有些技术点,并不是某个行业领域中特有的,但是我举例来说,就是在你所在的公司的行业领域中,和你部门的业务里,自己学会抽象技术点,把这些功能和技术实现总结抽象出来一套方案,当然很多已经是业界统一的标准了,这样自己短期近期的学习路径就一目了然了。

明确技能:

这个从2个方面来说,一个端来说,有些公司前端可能是做壳内的工作,比如electron,比如webview内的开发,比如c++做端上的开发,那么可能你需要就掌握除了前端开发之外一些端上的语言和开发学习了,比如学习c++,学习ios开发和android开发,或者nodejs开发,选对自己工作帮助最大的去学。

除了端相关的还有就是目前团队的技术栈,如果你不熟悉一定要在尽快短的时间内熟悉团队所用的技术栈,我这里不是说会开发,而是说,如果新开一个项目让你负责,你能否快速把团队现在的技术栈进行优化,复用,甚至升级的能力。如何快速在团队中脱颖而出的一个办法就是快速找到目前系统的缺陷,并快速帮助修复。这也是提升前端架构和工程化能力的一个阶段。

深度学习指的是什么?其实就是对目前已有的工作技能进行深入加强的一个过程,比如我们的架构目前是由许多第三方开源库进行拼凑组装的,阅读他们的源码,进行bug fix或者升级,制造一些轮子进行局部替换,开发新项目的时候,改变之前的一些架构。这些都算是深度学习,对已有框架做升级我觉得是最有意思的一件事,如果一旦做成,是非常对个人技能点出彩的一笔。

参见面试经典题目:你对团队最大的贡献or简述一个你觉得最自豪的技术成功或者技术实现。

明确目标:

长期目标和短期目标,其实结合上面的领域和技能2个方面来说,已经足够一些初中高级别的程序员自我进行总结归纳的了。我在这里特别说一下长期目标的指定吧,我拿我个举例子,我2013-14年的目标是成为一个业务线的前端负责人,或者技术负责人。2014-16年的目标是在前端领域做出一定的个人知名度。当然,指定完计划肯定是需要分解目标,把大目标拆分成小目标一步一步迭代的。比如成为前端负责人,首先你得技术能服众,二来,公司有新业务一定要第一时间去响应和支持,因为只有有了新业务才会有新负责人。。哈哈。比如在公司内部产生影响力,这个套用我大学的做法,就是不断的加强外接对你的标签化,大学时候大家对我的标签就是做私活,做网站找小爝,工作后我的标签就是,有搞不定的找我,我一直是致力于做一个问题终结者,这在我知乎回答的问题上也可以看出来。比如说要在前端领域做个人知名度,回答问题,写专栏,加技术群做管理,做live,做外部分享等等,其实都是短期目标,这些短期目标组合到一起长久积累就能帮你实现长期目标了。

我也建议大家前端开发工程师都给自己订一些1-2年的长期目标,比如学习全栈,自己做出一个独立web站点,比如学习app开发,自己在一年时间内做一款独立app,比如说做专业的前端技术博客,公号等等可能对于目前阶段来说非常难做到的一个目标制定。

不好意思的说,很长一段时间我的目标都是,今年月薪要超过XXX,明年月薪要超过XXX。如果达不到,我就会选择决策和指定计划来达到,总之目标感非常重要,除了公司的,一定要自己明确的长短期目标激励。

明确定位:

一个前端工程师在自己团队的定位,其实之前我们过的职级和能力模型已经说明了常见的一些阶梯职责,这里有一个小技巧,我相信很多leader,都是希望自己的team的人能够自主进步的,所以首先要先跟自己的leader明确自己在团队里的定位,职责,分工。

在团队对你的预期上,做到超出预期,可能很多人说,怎么超出预期啊,这个很难做啊。其实简单也困难,超出预期确实非常难,但是也不是没有办法。首先,我们先定义什么是超出预期,超出预期就是你的工作结果和表现超出了你目前团队对你的定位。

很好,如果是一个业务性团队,承接更多的业务和项目管理,时间管理工作,是不是就超出了leader对一个普通开发的预期?

如果是一个技术型团队,打造团队品牌,提升团队技术氛围,主动进行创新和已有项目优化,算不算超出预期?

如果这些都有人在负责了,那很好,你有了目标和榜样,跟他们交流,参与进去是否也算超出预期?

初级工程师的职责是完成业务模块的简单开发,那么独立负责一个模块开发算不算超出预期?帮助中高级工程师带其他初级工程师进行开发和技术攻关也算是超出预期。

其实超出预期很简单,就是多做,少推诿,手里,眼里有活而已,相信我,我这么多年工作的经验和秘诀其实也就是这个。

搞定自己的定位,明确下一个定位的要求,不断的超出预期,即可。

ok,说完了这4个明确的具体方法论,我相信,初中高级的工程师都能找到适合自己的成长学习路径了。我不怀疑每一个工程师的自学能力,如果自学能力不合格,是不可能走到这一步的,但是如何突破自我,确实是真的需要人来点破和指导的。

part 05:

有点啰嗦了,下边我们进入前端职场晋升环节,这个我其实也比较有发言权,我面试的单位大大小小也有10几家了,在公司参与晋升也有3,4次,帮助团队程序员晋升培训和ppt review也有好几年了,最近也进场参加公司内部的职级评审工作,当然现在评审的不仅仅包括前端,也开始包括后端开发,数据推荐搜索等其他技术岗位了。

我相信在这一章里,能够帮助大家看透,看明白到底什么是职级晋升,晋升的策略以及原则,还有如何增加通过率的方法。

我总结了个5个点来进行说明,述职技巧,述职材料的通用组织结构,答疑技巧,评审标准以及评委视角,当然这都是我的一些个人经验哈,大家选择性参考。

首先说一下述职的技巧部分:

首先述职的时间,有些高级岗位是在30-40分钟,有些初中级岗位可能是在10-15分钟,这个不同规定不一样,但是大体上的原则都是越重要的岗位给你的述职时间就越多。

然后是演讲技巧,对于演讲者来说,首先最重要的是你的气场,尤其是技术岗位的述职者,一定要非常有自信的展示自己的材料和工作成果,如果自己都磕磕巴巴,说不明白自己要说的,这个是最要命的,我遇到不止一个工程师,明明是高级水平,就因为最笨,导致评不上。非常吃亏。

这里提几个建议,如果你是teamleader,一定要定期锻炼大家在公开场合说话的机会,组内的分享和沟通,项目协调等安排每一个开发都参与进来,轮流有机会尝试,在众人面前说话的胆量,甚至包括在陌生人面前说话的胆量。

不是危言耸听,很多程序员这一关的能力差到令人发指。。

还有就是演讲前,一定要做逐字稿,非常重要的述职,需要自己提前一到两周做试演练,找组内,组外的人来进行预演评审,自己在家对着镜子练。我就遇到过不负责的teamleader,在开始评审2天告诉大家要准备ppt进行述职,大家只有周末准备的时间,周一来了,练也没练就去评,能评过就见鬼了。适当的包装和演讲练习非常非常重要。非常重要。

选题方面,也有技巧,选择的项目一定要是能够代表你技术实力的项目,如果当前公司的项目不够高大上,说自己业余的开源项目也不是不可以,甚至说上一家公司的项目也是可以的。

准备的时候,一定要对项目的技术难点,攻关难点,行业标准,你选择这个方案的理由,竞标过程,一一说明,通过流程图或者脑图来进行讲解,做到技术人员和非技术人员都能通俗易懂又觉得技术深度够。(评委可能跨专业,甚至是测试,甚至是hr)。

选题一定要说自己的见解,而不是罗列开源组件,或者直接上code review,虽然有时候偶尔的code review有加分作用,但是千万不要通篇的code review,听起来评委非常累,还浪费自己的宝贵时间。

然后我说一下一般的通用述职组织结构和格式:

1,述职人的部门和要晋升或者评选的职级。 2,个人介绍,包括职业履历,技术能力的概括,业界内外的影响力,甚至一些出彩项目的罗列,总之就像面试一样的介绍自己,拿最出彩的说,不要谦虚,不要说什么我是新入职的,我是什么职场新人,我工作时间不久,什么掌握的不是特别熟练,要不别说,要说就说自己的过人之处,切记切记。 3,主要项目介绍。

一般是2-3个人项目的介绍,每个项目应该包含简单的项目背景,技术栈,团队组成,是否跨部门,项目相关的数据,你在项目的角色,你的作用,突出你自己,然后开始进行你自己所负责部分的技术讲解。

一般讲解都是需要配图辅助的,uml或者脑图或者流程图最佳,如果是说架构,就把架构抽象出来画清楚每一部分的关系,如果是说代码,一定要把类的生命周期,初始化过程,核心方法,调用以及API等关键特性点用图的方式展示出来。如果说组件或者自动化工程化,性能优化的,一定要把数据,结果,前后方案对比,优缺点分析明白,而且一定要有竞品分析。

最后总结和QA,不要说什么展望未来一类的废话,直接抓重点,我除了以上的项目,个人的能力之外,我还有其他什么软素质,比如跨部门协作,比如参加过什么技术攻关,创新大赛,内外部技术交流分享,得过什么公司的奖,拿过什么个人奖金,团队奖金,或者专利等,总之总结部分是让你说自己的其他除了项目外的能展示你软实力和素质的环节,而不是说什么未来规划和甚至个人缺点什么的。不加分只能扣分。

再然后说一下答疑技巧:

为什么我们要提前写逐字稿呢,因为有时候评委可能会打断你,质疑你,甚至问你部分项目的数据或者一些技术概念问题,为什么这么选型问题不那样选型等各种问题。

所以写逐字稿的作用就是避免在被别人打断的时候,自己的思路被打断,虽然有ppt,但是有时候ppt写的不一定多,主要是以自己说配合图来讲解,所以如果有了逐字稿,在多次练习后基本是可以做到不短片,不漏核心内容的。

再一个是在回答问题的时候,如果明确的技术点,你非常确信,评委和你争论时,注意措辞和技巧,适当给评委台阶,前提是你能把这个技术原理解释的非常非常深入和细节,如果你不确信或者说不明白时,可以选择虚心反问或者认怂然后台下交流的方式来避免尴尬,前提是也要答出自己的一定思路,然后再补充上一个想交流的态度。这样好处是一来,确实答不对,但是你答出了自己的思路,而来让评委之后也不要瞎问你他自己不会的问题,因为有的评委可能自己也不知道瞎问你的,那么下次他再问你的时候就会掂量一下自己到底会不会了,当然这个方法慎用……

如果你的答辩非常有理有据,逻辑清楚,讲解的难点让人明白又觉得有技术难度,一般评委则会转为问你一些非技术问题,比如你带几个人,管理能力如何?跨部门协作或者说你的项目数据,性能指标方面的,所以这些我认为可以当做备选(除了数据部分)其他部分不写到ppt里,评委问了,你就直接补上,评委不问,在最后的总结部分,自己说出来。

这里我也给大家分享一下,我15年,应该是2年前在新浪职级晋升的ppt吧,给大家一些启发。

(过一遍我之前的html的ppt)当时是在新浪评l3-b和l4-a的2份ppt。

然后我说一下评审标准:

 仔细分析下,其实一个公司对一个人才的评审机制还是不单纯只在技术层面的,你的贡献,你的技术深度广度,架构组织以及额外贡献,说白了就是超出预期的部分,都在评审标准之内。

知道一些评审的标准之后,再对应准备资料可能会更有一些优势,评审不是小事,有些公司一年一次机会还不是每个人都能轮上,基本属于上学时候答辩的重要程度了。

说完一般的评审标准,最后说一下评委的视角,通过几次参加公司内部评审,学习了和看到了一些提问技巧:

1,关注你个人在技术中的重要性。 2,关注你个人在业界的影响力,突出成就。 3,数据,指标,前端的话可能不像后端,那么性能方面的指标比如首屏,白屏时间,cdn的使用峰值,平均访问速度,bug率,数等都可以,团队人数,模块数,类数,方法数等。 4,是否有架构选型能力,说白了就是对比框架和创造框架的能力。 5,技术价值,为公司节约了什么,生成率还是开发效率还是带宽,还是服务器。 6,沟通还有组织带人的能力。 7,某一项领域的深入度。

ok,就职级评审的话题其实非常多,这里点到为止,后边看是否可以让芋头和叶俊星进行补充和分享吧。

part 06:

我个人的职业规划。

这块就当我个人的一个总结吧,毕竟每个人的职业规划都不一样,我把我的规划制定方法论分享给大家。

首先通过刚才我说的一堆,其实不难看出,职业规划都是从小到大一步一步根据目标完成的,说到我未来的规划肯定要先讲一下我的现状,我个人的从业经历来说,最开始就是个普通的小前端,从小公司到大公司,是一个我毕业时的长期规划,大概用了1年左右时间,当时的准备主要是了解大公司的用人机制,技术栈,以及思考问题的方式,看技术问题的角度,这个我一直非常受用。

从小公司到大公司,规划也很简单,从初级晋升到中高级,从中高级晋升到资深。这个历程,也是大家一般前端工程师的做法。但是很多人会有个误区,初级,中级,高级,不是一家公司定义的,而是相对你自己来定义的,行业来定义的,比如如果我在一个小公司,我可能是这个公司的前端专家,去了bat,我可能就是个资深工程师。所以眼光一定要放大到整个行业。所以晋升这件事,并不只是在公司内部的晋升,跳槽,换工作也是一种晋升,换部门也是,换行业也是。

所以也验证了之前我说的,晋升等同于一次技术面试。

到目前我这个阶段,我也说不好自己到底是什么级别的前端,可能在某些大佬面前是一个小学生,所以一定要学会,找到行业内的技术标杆目标,和自己不断做对比,这也是做技术规划的一个我的根本原则。

到目前为止,我还是比较偏向技术的,但是这1年来我个人更倾向于技术管理,主要原因还是公司需求决定,还有个人的规划导致。

我在上一家找工作的时候,就面临了,技术管理还是技术专家的这个抉择,我后来选择了技术管理,其实并不是说专家路线不好,不适合技术人员,而是我个人在那个时间段,需要一个管理的机会来尝试锻炼自己到底适合不适合,如果不尝试,说白了,管理和沟通能力也是人素质的一部分,我想突破一下,突破后,视野会更开阔,突破不了,也不会后悔。

实战证明,我还是比较能够做技术管理的,当然这些不是我自己说了算的,公司和企业对你的认可才是最重要的,所以既然现在我的状态就是一个偏向技术管理的程序员。

那么我下一步的职业规划呢?其实也比较清晰,人生就像下棋一样,如果你明确了最终的目标,那么下几步就很容易去规划。我会在管理,或者技术管理的领域找到合适的标杆,这里就不黑别人了,然后尝试去做,成功了就更进一步,不成功自己和自己对比,也算是没有白忙活。

说白了,我的职业规划,就是不同的时间段,找到自己所在领域的标杆,如果实在突破不了,就换一个领域,深度挖掘一下,总有一条职场的路是适合各位的。

ok,我的职业规划原则就是这样。

part 07:

QA环节,我们下面开始进行视频连线两位大佬。开始之前先说一下安排。

首先是芋头,然后是叶俊星,不过我们三个都是同时在线。

然后,芋头先分享他的个人职业规划,然后叶俊星再分享他的。

之后我准备了几个通用问题问两位大咖:

1,芋头:

1,是什么原因促使你进入前端开发行业 2,前端开发领域那些职业路径未来会更受重视 3,行业经验能否为求职加分 4,如何给自己的团队成员进行职业规划计划

2,叶俊星:

1,刚毕业的或者初级前端如何能够进入美团这样的大厂 2,前端开发哪些技能偏向未来会更有潜力 3,如果下次换工作会选择什么样的行业? 4,还记得第一次公开技术分享的内容吗?简单聊聊

最后是我们一起回答一下聊天室里大家的QA。