最近公司在招聘前端架构师(高级前端工程师),这几天由于平时负责面试的大哥不在,由我客串面试官,但恕我直言,没有遇到能入我眼的架构师。这篇文章除了抒发一下我自己的感受,另一方面也希望给以成为一名前端架构师的伙伴们提供一些灵感。
兴衰前端
其实前端行业的兴起时间并不久,也就是近十年之间发生的转变。
最近有看到一个具有十年前端经验面试者的简历,从他的简历上我看到了前端的发展过程,从Dreamweaver、flash、photoshop“网页三剑客”,到编写页面模板的HTML、css、Javascript以及类库jQuery,到如今的Vue、React、ES6的“框架时代”。前端工程师的地位,也从最早的“切图仔”,逐步演变成了“工程师”。
当我看到这份简历的时候,我是惊讶而敬佩的,惊讶于从业时间之久,敬佩于它因行业转型而付出的努力,毕竟从一个近似于美工的岗位,很少接触编程的状况,转变到一个专业的“开发者”,并不是轻而易举的。
前端发展到今天,琳琅满目的框架、插件、工具库、脚手架令人抓狂,用哪个好?用哪些合适?我想这种“技术选型”的问题在大多数的软件公司都是存在的,这个时候就因运而生了“前端架构师”一职,但新的问题又出现了,人从哪来?
与发展了多年的服务端(java、C#、dotnet等)相比较,前端领域起步晚,经验丰富的人才稀少,虽然近几年培训班输送了很多人员,但能够称得上“架构师”的,恐怕并不多。另外我目前所在的城市非北上广深,想找一个这样的人才更是难上加难。
岗位需求
关于前端架构师的岗位究竟什么样的人才能担任,这个问题我也只能在这里阐述一下我的想法,不代表整个行业的看法,不喜勿喷。
想要了解岗位要求,最好的方法莫过于从各大招聘网站上了解。我看了本地一些用人单位的描述,脱不开两个要求:一是技术与经验,二是带团队。
前者是硬实力,后者是软技能。
在众多公司的应聘要求中,大概总结了一些内容:
1、经验丰富:一般要求3-5年,甚至5年以上;
2、技术过硬:对某个框架(vue居多,React,angular)精通,了解别的框架;
3、业务熟练:项目经验丰富,尤其看重完整项目经验,拥有从0到上线的经验;
4、共同协作:了解后端技术,与后端开发人员沟通无障碍;
5、技术广度:常用的周边工具,如webpack,axios,组件库,甚至linux、nginx有使用经验;
以上都是针对“硬实力”的要求,而对于“软技能”有要求的并不多,一般都是用一句“有带过团队经验者优先”这样一句话简单概括,可想而知,招聘者自己对“软技能”的理解也不太明确。
以我个人的理解来描述“软技能”:
1、团队优先:作为团队的领导者,需要做好牺牲自我的准备,将团队的利益放在最优先;
2、决断能力:对问题提出多种解决方案,并评价每种方案的利弊,决策出最优;
3、标杆能力:用自身的技术能力与独特的人格魅力,成为团队中其他成员学习追逐的标杆,用自己的作风影响他人,起到正向带头作用;
4、学习能力:在前端日新月异的发展中不断学习,把握技术方向,更新自身的技术栈,保持团队技术的领先;
5、人际交往:与团队成员不同,领导者必须具有沟通能力,不仅要与团队成员沟通,还要与领导沟通,做好中间桥梁;
6、担当精神:团队在工作中难免会遇到技术瓶颈,或者重大问题的决策,领导者必须要有攻坚在前,敢于担当责任的觉悟。
7、管理能力:服众,让团队认可你,也让领导认可你。
以上是我对“软技能”的理解,综合来看,可以称之为“领导力”。与项目经理的管理向领导力不同,架构师还要具备技术向领导力。
在这吐槽一下,这招的不是前端架构师,也不是高级前端工程师,倒不如称之为前端负责人比较贴切。
修炼之路
如何成为合格的前端架构师,没有一个标准的答案,唯一能够确定的,就是不断学习。
基础内容,必知必会:HTML、CSS3、JavaScript、ES6/7、Vue全家桶/React全家桶/Angular全家桶;
扩展技能,加分必备:服务端开发技术(node、java、sql等),网络协议(HTTP、TCP、Socket、直播流),Linux基本操作,计算机硬件基础常识;
架构专属,进阶技能:编码规范,技术选型,组件化思想,前后分离,性能优化,工程思维、运维支撑,敏捷开发与持续交付;
行业领域知识与技能、管理领域知识与技能、领导力。
虽然只是简单几行文字,但每个词单拎出来都能扩写成一本书。
掌握上述的所有技能对任何人来说都不容易,但幸运的是我们可以一步一步来:
第一步:合格的开发者
即使每天做着增删改查页面的搬砖工作也要带上脑子,阅读别人的代码和项目结构,复制粘贴不可耻,前提是知道你粘贴的是什么,既要知其然,也要知其所以然。
阅读每一行代码,直到你能讲述清楚每一行代码、每一句话、每一个属性所代表的的意义。
阅读项目结构,思考代码文件的组织关系,目录划分的道理,思考其利弊,并能提出改进的建议。
在日常的工作中慢慢积累,报错的时候记下原因和规避策略,对接接口的时候思考传参的方式,积跬步方能成千里,正如稻盛和夫在《活法》中提到的,精进在每天的工作中。
第二步:独当一面的得力干将
当你能够轻易理解别人给你的代码时,你就可以写出属于你自己的东西了,即使是一个普通的表格页面,那也是你自己通过思考得到的作品。将你所使用的技术磨炼到如臂指使的时候,试试挑战更有难度的东西吧!写一个递归方法,或者写一个工具函数,用代码说出你的想法,让别人使用。独立开发一个功能模块,成为独立开发的成手。
第三步:搭建项目的初体验
看了很多项目的结构之后,应该开始有自己的感受了。试着从0搭建一个新项目吧!模仿别人的结构也没关系,毕竟你做到了,不是么?
不用担心自己搭的不够好,当你使用你自己搭建出的框架时自然会感受到需要改进的地方,下次再搭就会好得多,多来几次就会得到更丰富的经验。
第四步:真正的工程师
随着搭建的项目越来越多,现在你已经可以胜任前端这一职位了,或许你已经很久没有遇到过令你感到棘手的问题了。了解一些其他的知识吧,为了成为架构师。
用精益求精的标准要求自己,每一行代码写的优雅而得体,目录结构简洁实用,然后思索工程化和组件化。
第五步:转换思维
将开发者的思维转换为管理者的思维,为前端标准化而努力思考,学习更多的知识,运维也好,行业也好,拓展眼界。
帮助其他人解决问题,不断积累经验,等待量变产生质变的时刻。
个人发展与职业生涯
“中年危机”
这个词语在一少部分人身上体现不出来,根据二八法则,约有八成的人群面临中年危机。
人到中年,拖家带口,上有老下有小,养家糊口的责任如同大山一样压得人喘不过气,无论是家中父母的养老,还是孩子念书上学,家中的吃穿用度,压得人不敢辞职,重找工作却因为年龄和薪资而屡次失败。
不提北上广,就我所在的这个城市,三口之家每个月花费6千一点都不算多,这就意味着要想给家人提供良好的生活环境,每个月收入要达到8-10k,在没有任何副业收入的情况下,仅靠工资收入不是不可能,而是有门槛。
谈一个现实的话题,如果你是老板,什么样的人能配得上8-10k的工资?
答案其实很简单,一技之长而已。不管是写代码还是做厨子,技能更优秀的人才才有资格跟老板谈工资。
如何成为“人才”
找到自己的方向
从二十出头刚步入社会,到三十五岁养家糊口,大概有十三年的时间。这十三年时间,就是职业生涯的关键期。
回头去看一技之长,随着现在各行各业开始细分,术业有专攻显得更加突出,尤其是对于前端开发者来说。但罗马不是一天建成的,想要达到一技之长的水平,至少要在一个领域打磨五年。
我接触过的,具有五年经验的人也不少,十年的也大有人在。以五年经验举例,大多数人都是在舒适圈里度过了五年,这就意味着他们和那些同样是五年经验,但不停学习并打磨自己的人相比拉了一大截,年龄长了,经验没涨。
如果是十年经验的,问题集中在三个方面,一是技术栈较老,随着年纪增大对新技术的学习能力降低;二是改行了,导致空有十年经验,却两头不讨好,旧技术跟不上发展,新技术水平有限;三是对自身的定位不准,十年时间什么都干过一点,但没有特别精通的。
综合上述的失败原因,姑且总结出以下几条建议:
1、职业生涯的前期,可以用两年或三年的时间尝试更多的工作,从中选择一个想做的,适合自己的方向。
2、深耕自己选择的方向,保持谦虚(满杯损,谦受益),不断学习,不断突破,发展技能树,持之以恒。
3、找准自己的定位,像一棵大树一样深深的扎根于某一点,扎根扎的足够深再去发展枝叶,但永远不要忘记往更深的地方扎根,那是你的立身之本。
4、不要荒废太多的时间,任何人都会有倦怠懒散的时候,但要有度。
5、坚持学习,每天学习一点点,即使和你现在的工作关系不大也可以去学习,在未来的某一天一定会得到回报的。
6、改行有风险,入行需谨慎。
7、适当吃亏,不要被眼前的高薪蒙蔽双眼,如果对你未来的发展有帮助,适当舍弃一些是值得的。
8、多交朋友,即使用不上他们,也不会吃亏。
9、关注行业,精力有余的时候关注一下资格证书,有益无害。
10、多读书,读一本好书是受益匪浅的事情,不要担心买书花钱,未来都会还给你,加倍的那种。
人到中年,拼的不是谁能加班,而是年轻时的个人规划,正所谓人无远虑必有近忧,古人诚不欺我。
后记
我想写这篇文章很久了,但一直不知道写什么内容,刚巧最近面试比较多,除了面别人,也被别人面,中间过程也产生了些许灵感,于是在白天摸鱼的时候码了这篇文章。
从我个人的角度出发,从刚从培训班出来时的迷茫,到今天的“看破红尘”,一路上得到了很多人的帮助。倦怠过,自满过,迷茫过,写这篇文章也希望能帮助更多人找到前进的方向。
我很感激我遇到的每一个人。
带我入门的师父,一个减肥永远失败的大哥,教会我如何发展,要有根,要有枝丫。
在我得意自满时把我问的一脸懵逼的面试官们,让我认清自己的水平还不够,哪方面还需要学习。
前任领导,和我讲谦虚向周围人学习,当时不甚理解,现在深刻入骨。
河南的大姐,很爽朗,口头禅是人蠢就要多读书,从那以后我开始读书,虽然不是每天都读,但也略有进益。
还有很多人,不再列举。
tips:每当我感到迷茫的时候就去约面试,从面试中可以感受不足,还能给自满的心态浇一盆冷水。
题外话
提到行业细分,我感觉前端的细分也初现端倪了,两个方向,一个是大前端,一个是泛前端,感兴趣可以了解一下。
另外就是前端人力的两极分化趋势,从去年开始低代码就开始火热,众多厂商开始布局低代码业务,这可能导致前端开发行业发生一点微妙的变革,强者越强,弱者碌碌无为。谨防马太效应。