最近看到了一篇鸡汤文《How To Become a Great Front-End Engineer》(原文地址http://blog.mcbird.cn/2015/08/15/How-to-Become-a-Great-Front-End-Engineer/),是来自Google的前端工程师-Philip Walton 分享的自己关于如何成为优秀的工程师的一些观点,看完很有感触,里面的每一条观点都能给人带来一些深刻的认识,而且我在博客园开通博客并开始写博客也是受到这篇文章的启发,希望通过博客记录下自己的所学、所想以及一些感悟,希望自己能在前端工程师的路上能走得更远。接下来我将对文章《How To Become a Great Front-End Engineer》里面的每一条观点谈谈自己的看法,记录下来以让自己在将来感到迷茫的时候,可以来这里寻找一下方向。
Don’t just solve problems, figure out what’s really going on.
我对这一句话的解释是:不要仅仅是解决问题,更要找出问题的根源所在。在编程过程中,我们总会遇到各种各样的问题,我们不要因为运气好解决了问题而沾沾自喜,而我们要做的是深入到问题里面去,查找问题出现的根源,时刻保持疑问,思考解决问题的方法有多少种,最终选择一个最优解决方法。就比如我们在前端开发的时候,为什么有时候相同的代码在IE6浏览器跟其他标准浏览器的表现不一样,通过google一下,我们发现问题是IE6对一些样式不兼容,然后我们可能在CSS代码中,通过hack写法单独对IE6写一个样式,然后重新打开IE6浏览器看一下,问题是解决了,可是这种解决方法是最好的吗?我们不能满足于解决问题,更要深入研究它,通过查阅资料寻找新的解决办法,最终挑选一个比较好的解决办法。
Learn to anticipate future changes to the browser landscape
学会预测浏览器领域将来会发生的变化。原文作者举了一个例子,早在2011年的时候,他在一个非常著名的 javascript 框架看到下面这样一段源码(大致如此):
var isIE6 = !isIE7 && !isIE8 && !isIE9;
我们现在看来,这一行代码我们并不能判断用户访问页面的浏览器是不是IE6,但事实上这一行代码的作用当时就是用来判断浏览器是不是IE6的,没错,在IE10出来之前,这一行代码是正确的,然而微软会继续升级IE浏览览器,如后来推出的IE10、IE11浏览器,现在这行代码就要失效了,要想这行代码不出问题,必须将代码改成:
isIE6 = !isIE7 && !isIE8 && !isIE9 && !isIE10 && !isIE11;
所以我们在写代码的时候,也要考虑到浏览器的发展变化,编写搞可维护性的代码,你要学会预测将来可能会发生的变化,即使将来发生了,你的代码要依然能够正常工作。
Read the specs
阅读官方文档。我们都知道官方文档是最具有权威性的,我们中国人看到的大多数编程指南都是根据官方文档编写的,然而一些翻译人员的各方面能力参差不齐,所以最终写出来的书并不能更好地启发读者,可能会让读者对一些规范的理解产生一定的误解,作者所举的例子是跨浏览器的兼容性问题,在此就不做介绍了。我们要做的是尽可能提高自己的英语水平,然后尽可能多地去查阅官方文档。有时候大家所以为对的,其实并不一定符合官方文档解释的。
Read other people’s code
阅读别人的代码。这无疑是一种非常好的学习方式,在前端开发过程中,我们通常会遇到代码不正常工作的状况,也许之前自己已经解决过相同的问题了,然后你用之前使用过的方法去解决问题,这对你的进步是毫无益处的,你要做的是去google一下这个问题,看看别人是怎么解决这个问题的,阅读一下别人写的代码,从中获取一定的启发,从而提升你的编程能力。而且在现实生活中,我们都是在别人写的已经存在的代码的基础上工作的,对别人的代码进行修改、添加。所以阅读别人的代码的习惯与能力是个人成长历程中所必需的。
Work with people smarter than you
跟比你聪明的人一起工作。在中国有句谚语“近朱者赤,近墨者黑”,大概是有这个意思吧,作为前端工程师,他们的知识体系大都是通过自学完成的,在自学过程中往往缺少与别人进行交流,所以写出来的代码通常比较糟糕,同时又没有代码写得比你好的人的指导,所以在很长一段时间你也觉得不会有多么大的进步。然而跟经验比你丰富的人一起工作,你就能获得更好的成长,因为别人会吐槽你的糟糕的代码,让你无地自容,然后怒火燃烧,斗志昂扬,当然你应该明白我这是开玩笑的,我想表达的是,你跟比你聪明的人一起工作,至少会有人审查你的代码,然后给你提出有建设性的意见,让你写出更优秀的代码。
Reinvent the wheel
重复造轮子。这并不意味着不让你在编程的过程中使用其他一些优秀的库(比如jquery)来提高你的开发效率,但是你要想成为优秀的前端开发工程师,你更应该做的是成为这些优秀库的维护者(开发者),而不仅仅是使用它们,单纯的使用那些优秀的库并不能让你理解问题的核心。唯有自己尝试去写一些自己的库,并且不断维护、优化代码,这样你才能学到更多,何不尝试一下呢?
Write about what you learn
把你学到的东西写下来。这个很重要,这也是我写下这篇博客的原因之一。
虽然自己写得并不好,而且写下来并不一定会有人看,但这是记录自己成长历程最好的方式了。把学到的或者不理解的东西记录下来,而且有的知识,可能你觉得自己已经理解了,但是当你通过博客写下来的时候,你才发现事实并没有掌握好。
所以坚持写博客,或许能强迫你更好地理解你所学到的知识。