成为一名优秀的前端工程师

2019年我的前端生涯思考与反思

2019-11-23

背景

今年的年终总结提前了些,趁着自己刚换了个公司,索性把这一年多对前端开发的思考总结分享一下

首先,我自己开始学前端是在大学时候就已经确定了,也是感觉做前端比较好玩有成就感,随即入坑,趁着移动互联网大众创新的大环境,从实习毕业到转正,后来换了两次工作,一路上还算比较的顺利,找工作也没遇到大的曲折,现在想想做前端也已经四年了(算上实习)。但是也正是因为这样的「顺利」,使得我还包括很多前端同学都忽略了很多我们作为前端工程师应该具备的东西

到了今年,移动互联网的红利渐渐消失,全球经济下行,很多公司相继倒闭,裁员潮让很多人失去工作,或者很难找到工作。包括这次我也是在准备了很久才决定出去试试机会,面试求职的过程中会出现这样的情况:虽然对方感觉你已经很好了,但是还是要让你等很久才会给你答复,甚至有的 HR 打电话直接告诉我,“我们再比较下,会晚些给您 Offer”。

所以在当前的环境下,为了让自己不被时代抛弃,掌握职业发展的主动权,思考成为一名优秀出众的前端工程师变的尤为重要,以下即是我的反思

如何成为一名优秀的前端工程师

这个话题其实很多人都有自己的总结,包括业界大牛克军的内部分享《和团队谈个人成长》,我也是看了几遍,每次看都深有体会。说到成为优秀的前端工程师,很认同其中关于成长的描述,即成长包括客观因素主观因素

客观因素

如果熟知 JavaScript 都知道有个 this 变量是指向环境上下文的,同样一个方法,this 指向不同,返回的内容就是不一样的,这就是环境的力量,同样一个人,处在的环境不同,成长的方向和进度也会大不同。

我还没毕业就选择了在一家小创业公司开始实习,当时给我的感觉是兴奋的,因为这家公司很有朝气,部门的Leader 都很厉害,我在这家公司学到了很多东西,成长也很快。但是回过头来想一想,如果当时我能在一家大公司实习该多好啊,知乎上很多问题都讨论过毕业是进大公司还是小公司好。当时的我也很迷茫,没有意识到这个问题的重要性。

现在让我回答,我肯定建议你先去大公司,当然前提是你实习的时候就很优秀,毕竟大公司要求还是比较严格的,其中有对基础知识和逻辑能力的考察,还会参考你所在学校的实力名气等。至于为什么选择去大公司,还是回到主题,那就是环境。

大公司因为业务与技术的流程相对规范化,更适合一张白纸的毕业生去规范你的行为习惯、做事态度、思考方式等等,并且前端的基础设施也比较丰富,能让你学到很多工程化的东西,开阔视野,同时你的同事也都是业界优秀的人,能让你避免去走很多弯路,更注重人才的培养。

小公司一般都处在业务扩张,迅速迭代的过程中,一方面,会让你一不小心就陷入业务的漩涡,导致缺乏总结思考的过程,另一方面,小公司也缺乏完善的基础设施做代码测试或者监控等流程,导致你对于性能的优化和产品的质量问题都比较模棱两可。这种环境会让你的成长很慢甚至产生对前端开发的误解,以为前端不过如此

最近在看吴军老师的《见识》,他对年轻人职场的一个建议就是:

人的第一份工作很重要,它的性质和成败决定了你此后职业发展的方向和事业起点

所以,初入前端的人还是尽量靠自己的努力进入大厂,依靠这种环境资源,不断打磨自己,你就像一个产品,即使出去也是人人争抢

说到打磨自己,下面就要谈谈主观因素了,主观因素其实就是靠自己,那么如何靠自己能够成为优秀的前端工程师呢?

主观因素

我们大家都知道「玉」,好的玉,颜色剔透,色泽均匀,经过细心雕琢,成为精美的形状,随即成为市场上的“宠儿”。其实,我们每个前端工程师也都类似一块玉,不仅需要良好的内在品质,也需要经过不断的打磨才能成为一名优秀的工程师。

所以,我把如何成为优秀的前端工程师主观因素分为两个部分,分别是素养(质地)和积累(雕琢)。

优秀的前端工程师

素养

我自己认为比较重要的优秀前端工程师或者说是工程师的素养主要包括学习能力革新能力效率意识严谨态度这四个方面

学习

作为一名前端,学习是首要且重要的事情,前端技术的更迭的速度是十分快的,社区里很多人都在说「学不动了」这样的话,谁说不是呢?各种框架、库、工具、语言层出不穷,可能这个还没搞懂或者使用,又出了新的东西,让人感觉十分疲惫。但是我们大多时候其实都在学着怎么使用,而没有学这是什么原理,导致学的再多也只是皮毛。所以要学习就深入系统的学,构建自己的知识体系,比如 react 和 vue 的原理其实很多相通的地方,只需要搞懂一个的原理,另一个也就很容易就能理解,这样就减少了很多学习成本。同时要时刻保持学习的态度,半年不学习可能就跟不上技术的步伐了。

革新

大家都在讲创新,那是因为改革与创新太重要了。一个拥有创新点子的工程师比照葫芦画瓢的工程师更能带动业务的发展,得到公司的认可。我自认为我也不是很会创新的人,但是我也会经常尝试着改变创新一些东西,不论是在用户体验还是效率上的。

效率

说道效率,我总觉得「懒」确实是人类进步的动力来源。我在工作过程中,如果发现什么流程需要手动重复或者过程严重影响到了效率,我就会想怎么优化这个流程,不管是通过开发一个工具还是规范出一套流程。这样能让你省出很多时间来做其它的事情。拥有效率的意识,会让你更能优化你的工作流程,同时减少你加班的时间

严谨

态度的严谨对于一个工程师是非常重要的,对于平常的优化工作,你不能说「快了很多」或者「占用内存更小了」,这样说,谁知道到底是快了多少,减少了多少内存的占用。而是要通过科学的实验,通过数据的形式输出。没有证据的支撑,没人会知道你到底做的有没有效果。很多大公司都有数据监控的一些基础设施,这些都是很好的参考依据。

积累

拥有以上的内在品质还不够,那只能说明你是个质地良好的「石头」,还需要长期的积累与雕琢才能成为名个优秀的前端工程师。在积累上,我认为主要是知识的积累和经验的积累

知识积累

作为一名技术,技术知识的积累是非常重要的,我也因为基础知识薄弱吃过很多亏,现在也在不断的补充学习。我理解的知识主要分为广度和深度两个方向的知识。

在广度上,不仅要掌握前端的基础知识,还要夯实编程基础,比如软件工程方面的思想,设计模式,甚至还有上下游的知识,包括客户端、服务端、运维、测试、产品、设计等知识,都要知道了解一些,便于更好的沟通与理解所做的的工作。还有一点就是英语,作为一名优秀的技术,英语永远都是一个必须掌握的东西,因为很多资料都是用英语发表的,学好英语,就能拿到一手的资料,帮助我们更好的理解一个新事物,并能开阔我们的视野。

在深度上,最好深精一个你愿意去研究的技术方向,比如node、数据可视化、3D技术、编辑器、地图等等,毕竟做技术不能大而全,最后什么都做不好,选定一个方向,常年深耕,说不定你就是这个方向的技术专家了

技术知识的积累,建议以看书为主,因为书上的内容更加体系,更能让你深入的去理解。技术社区的文章为辅,通过别人的视角去看这门技术。同时要不断做些项目,纸上谈兵的技术终究是纸老虎

经验积累

说完知识的积累,还有一个方面就是经验的积累了,这些东西是书本上学不到了,只有你经历了总结了,才是你的沉淀。比如说项目的经验,业务千千万,遇到的问题,踩到的坑都是你的宝贵经验,可以为你以后的项目提供了可靠的参考

所以在工作中要多去总结我们的业务,遇到的坑多去反思,形成自己的一套技术方案。优秀的工程师在遇到每个问题都能拿出至少一种的解决方案,快速的落地解决问题。

经验的积累不止这些,还有包括技术架构设计、管理带团队的经验等等,当然要拥有这些经验,除了自己努力,也要靠机遇了,也就是是上面说的客观环境因素了

总结

通常,通过自己主观的努力,是可以改变自己所处的客观环境的,更好的客观环境又能促进你的技能学习和经验的积累,从而实现正向循环。

以上就是我认为的如何做一名优秀前端工程师的方法。当然这些也都是根据我的所见所闻,包括工作经历、面试过程、看到的文章或书的一些归纳。我也不认为我是个优秀的前端工程师,其中有很大一部分我也在自我提升,不断学习中。

以上分享若能给你带来一点点启发与共鸣,我将倍感荣幸