前端工程师如何才能不焦虑?
引言
进入2019年,中国互联网充满了焦虑的气息,不断有各种负面的消息,年初的互联网行业的集体大裁员,让大家真实感受了一下互联网下半场的变化。
外企最近几年持续的退出中国,裁撤国内研发中心,曾经高大上的代表也逐步褪去了光鲜的外表,不过好在补偿并不亏待,加上外企培养的良好个人素质,再出发也许并不困难。但是,国内的996是否还能适应呢?
中兴41岁员工在被裁后跳楼自杀,让人不禁扼腕,中年技术人员的上有老、下有小、外加几百万的房贷,看似事业有成、人生赢家,其中的压力其实很多人不能理解。
各种自媒体关于裁员、35岁程序员都去哪了,最近还看到一系列漫画描述互联网从业人员30岁后的出路:送外卖、开滴滴等等,固然充满自嘲,其实也说明了无奈的现实。
这篇文章不希望给大家带来焦虑,想说说自己对这件事情的看法,以及如何才能不那么焦虑。
现在有什么不同吗?
就在短短三、四年前,那时候全国还在号召全民创业、万众创新,一大批移动互联网的公司出现,一波波概念出来,互联网金融、O2O、互联网医疗、教育等等,现在回头一看,不过是一场闹剧而已。
真正成功的公司凤毛麟角,根据互联网的特性,一定是规模性可扩展的业务才能赚钱,所以在每个细分领域大体上只能有两三个玩家存在。
前段时间还看到有人提问“为什么现在大厂都只招工作3年以上的了?” 其实核心原因就在于互联网进入下半场,在上半场,不断有大量资金支持,有大量用户可以收割,有大量场景没有互联网化,于是人才的缺口是巨大的,也是当年培训班如火如荼的原因。
现在用户的增量没有了,连用户的时间增量也没有了,用户数和时间向巨头集中,你可以想想手机上的app有多少装了就没再打开过了?
现在的人才市场是供大于求,充斥了前几年批量进去的初级的程序员,在最近会发现工作并不好找了。但是3-5年高级资深的工程师还是紧缺的,公司对于人才的标准是提高不少的,招人也变的很小心谨慎。
下半场各大巨头都瞄准产业互联网,这是一个完全不同的市场,不再能够快速迭代,小步试错,c端用户容忍度比较高,但是b端商户有可能就因为一个小小bug而拒绝你的服务。这是一个需要耐心,需要精耕细作的业务,过往爆发性的增长可能很难再现。
前端有什么不同?
最近5年,前端的发展令人应接不暇,从三大框架,到小程序,到Node,到GraphQL再到WebAssembly。前端的技术看起来发展是极快的,覆盖的范围也越来越广。
技术的迭代更新固然让人兴奋,但也需要大家不断学习,5年前玩转jQuery和ajax就可以找到一份好工作,但现在如果在简历上还出现这些技术都是减分项了。
多平台的扩展也让前端有更多空间,现在可以用react native、Flutter写app,可以写小程序、快应用,可以用Electron可以写桌面应用,可以用Node做后端。
以前有过一句话“凡是可以用JS实现的,终将用JS来实现”。这句话看起来一步步成为现实,但面对这么多的选择方向,前端同学们是不是更焦虑了?
前端工程师需要具备的能力
现在是一个信息爆炸的社会,信息是不缺的,缺的是过滤信息的能力,缺的是独立思考,将知识整理为我所用的能力。想要不焦虑,一定要明白哪些是需要关注的能力。
前端工程师首先还是软件工程师,因此软件工程师需要具备的基础能力一样,最近我司也不断强调苦练基本功。
软件工程基本功有哪些呢?
-
编码能力,数据结构,代码规范,写出优雅可维护的代码,从变量命名到单元测试等等
-
设计能力,设计模式,分层解耦,领域设计,技术选型,写好技术设计文档,做好技术评审等等
-
业务理解能力,一切研发工作都最终服务于业务,要能够对业务有理解,才能避免沦为业务产品的搬运工,才能参与业务决策中,这样才能服务驱动业务
-
总结规划的能力,相信大家每半年或者一年都会有总结,但是大多数总结会变成流水账,应该培养如何体现做技术选型的思考,如何做好技术规划
-
项目管理的能力,也许你不是项目经理也不是scrum master,但你个人依旧可以做好工时评估,开好站会,控制好进度,影响推进协作方的进度和产出
关于技术学习上,由于现在有大量的新技术、铺天盖地的技术文章,无形给大家很大的焦虑感,觉得一天不学习就跟不是时代的步伐了。
对于如何进行技术学习有几点建议:
-
多学不变的东西,这点和上面提到的基本功很类似,这些基本功会让你的职业发展长期受益的,但是往往是基本的缺乏明显短期收益,会让大家忽略。
-
建立知识图谱,每一个技术方向都有完整的知识图谱或者学习路线,GitHub上有不少总结的很好的图谱。这些图谱的好处在于你能够通过图谱很快补齐短板,对于新的知识点也能从容归类,不再盲从。
-
跨知识点的学习,前端技术点非常繁杂,如果都是短期追逐各个新技术点,很快就会疲于奔命,到头来感觉好像也没沉淀下来。跨知识点是希望能够让学习从点到面,在从面到体,例如前端三大框架一定要对比的进行理解,在架构设计上有什么优劣,是怎样做取舍的。又比如状态管理框架上,redux、mobx、vuex都是如何设计的,在使用场景上有什么区别。
-
认识解决问题的本质,以前可能需要大家能够熟练使用技术框架也许就够了,但更本质的是这些技术是如何解决问题的。就拿跨平台的方案来说,最开始大家基于Webview通过js渲染界面,通过JSBridge获取原生能力。但是Webview渲染始终无法获得类似原生的体验,于是RN/Weex的技术出现,通过js编写,基于vdom,渲染成原生控件,从而解决了渲染性能的问题。但是,跨平台的原生体验有差异,js和原生通信始终有性能问题,于是Flutter出现,实现了从底层渲染引擎到界面渲染再到消息通信的全闭环实现。
代码之外
工程师的人生不仅仅只有技术,代码之外应该还需要有很多可以学习掌握的。这里推荐给大家一本书《软技能》,涵盖了代码之外的方方面面,例如个人营销、学习、时间管理、职业规划、理财、健身等等,限于篇幅就不展开了,也许今后有机会再整理一篇。
《百岁人生》中提到未来90后或者00后大概率平均寿命会达到100岁,将来的人生也不会是典型的三段式:上学、工作、退休,而会是变成多段式,而且随着职业生涯越来越长,大概率不会只从事一份相同技能的工作。
职业生涯从来不是百米赛跑,而是马拉松,不断投资自己,获得可以迁移的技能,独立思考的能力,到中后期越是软性的技能越能给你加成,愿诸位工程师能够远离焦虑,活出多彩的人生。
有兴趣同学可以关注微信公众号奶爸码农,不定期分享关于投资、理财、IT的信息: