五个步骤,成为优秀的前端工程师

2,820 阅读9分钟

从前,有一个前端程序员,他无意间得到了一盏神灯。神灯许诺会实现他一个愿望。于是他向神灯许愿,希望有生之年能够学会所有的前端技能。神灯思考了片刻,赐给了他永生。。。

“优秀”的定义


在我们开始讨论之前,答应我,先问自己这样一个问题:优秀的前端工程师应该是什么样子呢?如果你的答案是精通各种前端框架,或者是掌握各种前端技能,亦或者是理解用户的真正需求,甚至是前后端通吃的全栈工程师,那么恭喜你,你的答案和我刚开始思考这个问题时的答案差不多。

的确,在前端领域定义优秀,自然是精通一种甚至多种前端开发工具和框架,理解这些框架的底层逻辑,知道用户的需求和痛点,有属于自己的开源项目和技术博客,并且写得出一手整洁且bug free的代码。这些优秀的特质令每一个前端从业者神往,但同时也令人遗憾。因为一旦在脑海里形成这样一种所谓“优秀的”前端工程师的定义,我们就会发现,自己似乎永远也成为不了我们自己定义的优秀的前端工程师了。现在不是,以后也不知道何时会是。这足以让我们反思,我们做不到“优秀”,究竟是我们自己不够努力且没有天分,还是对于“优秀”这个词的定义有问题。

别着急,让我们先来看一看有关“优秀前端工程师”的传说。

优秀前端工程师的三个传说


1. 无所不知
还记得之前那篇前端疲劳里的这张图吗?


没错,优秀的前端工程师掌握了这张图上的几乎一切。他们不受前端疲劳的困扰,他们可以跟上每一次技术更新迭代的脚步,将最新的工具和技术轻松收入囊中。大多数情况下,他们不需要查看技术文档和手册,因为那些东西好像就存在他们的脑子里。无论是写正则表达式,还是调用API,抑或处理复杂的JS代码,他们都能信手拈来。

2. 完美代码
每次code review,我的内心都很忐忑,因为自己丑陋且性能低下的代码即将曝光在同事的眼前。优秀的前端工程师从来没有这些烦恼,相反,他们的代码往往是被作为模板来接受众人膜拜的。简洁,优雅,高效。有句话怎么说来着,漂亮的不像实力派。偏偏漂亮还不够,连注释都恰到好处。总之就一句话,给你一个无法拒绝赞美它的理由。

3. 极度专注
在这样一个时间被互联网不断撕裂的时代,专注早就成为了一种奢侈的品质。而优秀的前端便享有这份奢侈。他们似乎感觉不到疲惫,不是在写代码,就是在去写代码的路上。当大多数人都沉迷于吃鸡农药等游戏中时,他们却始终让自己沦陷在代码的世界里。请你给我一个他们不优秀的理由。

传说很难照进现实


不知道你的身边有没有做到以上三点的前端工程师。这种人当然存在,但作为普通前端的我们可能根本接触不到他们。因为能做到三点中的一点都已经远远不止优秀这个词可以形容了。 做到两点或者以上的人应该已经不会是单纯的工程师了,至少已经是leader或者是CTO了吧。我们可以把这些传说中的特质视为自己的奋斗目标,但我们不应该把“优秀”定义的如此高不可攀,不近人情,让大多数勤奋的前端工程师们与优秀“绝缘”。

五步,让优秀触手可及


1. 承认自己不知道
是的,你没看错,承认自己不知道绝对是一种优秀的表现。前端技术的爆炸式发展带来了很多创新的理念和极致的体验,它早已无处不在。但同时,它也让前端开发者们处在需要时刻跟上前端发展步伐的迷茫和痛苦中。若不加判断的追逐这种日新月异的技术进步,就会走入什么都学了一点,但什么都没学会的境地。
不知道所有的技术没有关系,你也不可能都知道。大胆的承认自己不知道,比打肿脸充胖子假装自己知道的人要优秀的多。

“React好复杂啊,要加上ReactRouter和Flux才能写大型应用”
“嗯嗯,我也这样觉得(内心:React是什么。。。)”
“那你平常用React做什么?“
“。。。(卒)。。。”

2. 新技术 != 合适的技术
你可能不止一次的听到过这样的嘲讽:“什么?你还在用Gulp?太过时啦,现在大家都用Webpack,比Gulp好用多了”。我不知道这种嘲讽有什么道理。新的技术就一定比原来的好?脱离了实际的应用场景去评价工具的好坏就是耍流氓。我们学习和使用新的技术,一定不能只是因为它新它酷炫,而是因为它能够更好的帮助我们解决当前的问题。如果旧的技术已经帮我们完美的解决了问题,那我们完全可以选择忽视新的技术。
下次再有人单纯的因为没用最新的工具来怼你,你就大胆的对他说:“小孩才分新旧,大人只看利弊,对解决问题有利的才是最好的。你呀,too young too simple。”

3. 有效地利用资源
能记住大量的技术细节当然是强大实力的体现,但记不住并不代表弱小和拙劣。在这样一个信息量如此奢华的互联网时代,大多数的知识都可以在5分钟内百度谷歌到。很多大的公司不是喜欢将一些小业务外包出去吗,我们也可以把自己的一部分记忆“外包”给互联网。
这个道理就像计算机。内存的空间是宝贵的,而硬盘则没有太多空间上的烦恼。我们的大脑就像内存,而互联网就是我们的硬盘。我们只需要在大脑里存储空间占用极小的索引,把具体而庞大的知识细节交给互联网这个巨大的硬盘存储。如果我们把大量的知识和技术细节存储在大脑——一个昂贵的内存上,这岂不是暴殄天物吗。
因此,最重要的不是记住多少知识和技术,而是在需要用到它们的时候能够快速高效的利用在大脑内建立的索引,然后在互联网这个容量几乎无上限的硬盘上找到它们。知道知识在哪,这绝对是一种优秀。

4. 不完美,怎么了
每个程序员都想写出完美的代码,可问题在于,这一切都得从写有问题的代码开始。最重要的是,我们得开始写,不能因为害怕不完美就不写。这和写作是一回事。我半年多没有在简书上写文章了,这并不是因为我不想写,而是我太想写出精彩、完美的文章,反而让自己无法下笔了。这让我陷入深深的自我怀疑中,怀疑我平庸的才华无法匹配我对自己过高的期待。但我今天还是写了这篇文章,因为我反复告诉自己:简单点,写作的方式简单点(这句话自带旋律...)。总之,下笔先开始写起来就对了。
写代码也是这样,它得先被写出来才能给我们让它变得完美的机会啊。事实上,完美的代码并不是写出来的,而是改出来的。debug的能力比coding的能力还重要。我很喜欢这样一句话:“Software is soft.” 软件是软的,代码也是软的。还记得我们小时候玩过的软软的橡皮泥吗?没捏好怎么办?没关系啊,反正它是软的,摊平了重捏啊。写代码就是这个道理。

5. 能沉进去,也能跳出来
我们都认为,优秀的人之所以优秀是因为他们能够让自己沉浸在自己所做的事情中,不受外界的打扰。这当然是对的,只有专注、聚焦在一件事情上,我们才能把那件事情做好。优秀的前端工程师一定是那些始终磨练着自己的技术和密切关注着前端领域发展的人。是他们的专注和不知疲倦造就了他们的优秀。可是事实是这样吗?并不完全是。
前端开发的脚步已经渗透到了人类社会的方方面面,每个行业都需要网站,都需要找到和特定人群交互的方式,而前端技术正是这类需求的最佳解决方案。作为前端开发者的我们,如果仅仅把自己局限在前端技术这个狭窄的领域内,技术的创新又从何而来呢?
我自己是音乐爱好者,平常会录点音乐视频自娱自乐。有一天我心血来潮,想知道前端领域和音乐有没有碰撞出什么火花。上谷歌一搜索,便发现了很多优秀的JavaScript的音频库。什么howler.js,loop.js,audiosynth.js, tone.js,全都是music library for JavaScript。试问,如果那些作为前端开发者的音乐爱好者们只关注前端而放弃了自己的爱好,那么,还会有这些优秀的令人脑洞大开的前端音乐工具存在吗?
跳出前端,在不写代码的时候继续培养自己的兴趣和爱好,让自己接触到不同的领域和行业,从而使自己拥有不同的视角。正是我们把各种各样的兴趣引入到了前端的世界里,才让前端的创新层出不穷,技术蓬勃发展。


好了,现在的我已经准备好成为一名优秀的前端工程师了,你准备好了吗?