来至谷歌大神的博客 只翻译大概意思,不追求细节
最近博客上有人问我,怎么样成为一个伟大的前端,有什么建议吗?
我并不认为我自己 是一个伟大的前端。事实上,在我最初从事这个行业的几年了,我感觉自己并不能够胜任我的工作,我申请这些职位因为我并不知道自己多么无知,我得到了这些职位因为面试官并没有问出正确的问题,
我最后干得非常好,并成为了一个团队里有价值的成员。当我离开去申请下一个我并没有那么符合的职位的时候,我往往担任着招聘我的继承者的重任。再回头看看我通过的那些面试,我被我当时多么缺乏那些重要的知识所震惊。我现在并不会雇佣当时的我,尽管我知道我可能会成功。
我再web端工作的时间越长,我就更加的明白区分good 和 really good并不是他们知道的那样:知识是最重要的。但是在一个变化如此之快的领域,怎么样能够获取那些(长久看来)是重要的知识,比起再任何时候你都要知道的那些,就没那么重要了。(就是说知识虽然重要,但是有些道理你是无论如何都要懂的)更重要的是,你知道如何用这些来解决每天你遇到的问题。
不要光想着怎么解决问题,找出真正发生了什么
太多的前端只是在修补,等到正确了就立马去做其他的了,我知道这些因为我一直在code review
我经常问你为什么在这里加这个,他们通常回答:移除了就没办法工作了
我知道你们需要让程序能工作,但是如果你不花点时间关心问题的根本,你往往会陷入重复的问题。
我知道研究这些问题可能会花费很多时间,但是这会在未来节约很多时间。以后就会在 guess and check 上少花时间。(简直真理!)
学习预料那些再浏览器端可能的变化
前端和后端很大的区别就是后端通常工作在可控制的环境里,而前端往往不是。你工作的平台,设备会一直在变化,你的代码需要一直优雅的工作。
我记得我以前读过的一个js 库代码,像下面(简化过):
var isIE6 = !isIE7 && !isIE8 && !isIE9;
当IE10出来之后,这个库就垮掉了。
我知道有些情况下需要使用这类代码是很有必要的,但是当在任何时候你使用这些代码的时候需要考虑到未来可能出现的bug
我知道对于我们大多数来说,我们写的代码不仅仅会只需要满足我们现在的需求。有些我8年之前写的代码还在大型的网站中运行,这很令人满意也令人恐惧。
阅读说明
浏览器永远都有bugs,但是当不同浏览器对不同的代码有不同的渲染的时候,我们往往认为好的浏览器是正确的,坏的浏览器是错误的。总有特例,我们的判断是错的,这些发现可能改变未来。
然后举了个早期flex中min-height,min-width的例子,他们初始值应该是auto 而不是0 。当时只有firefox 是正确的。
所以当两个浏览器渲染不同的时候,你应该找出根据,并确定哪一个是正确的。
那些所谓的伟大的工程师总是走在变化的前面,适应新的技术在他们成为主流之前,甚至为新的技术做出贡献。如果你阅读说明,在使用之前想象他们是怎么工作的,你会成为为技术进步做出贡献的那一部分人。
读别人的代码
你可能认为阅读别人的代码不是很有意思,但是毫无疑问这是成为优秀程序员的最好方法之一
自己解决问题是一种很好的学习方法,但是很快你就会达到瓶颈,阅读别人的代码让你思路开阔,也能很好的融入开源项目或者其他团队。
我犯了一个很大的错误就是在招聘的时候只让这些人写代码,从来没有让他们读代码,找出代码中的问题,然后解决问题。这样很不好,因为一个工程师的很多时间都花在改需求上,而不是添加新的特性。
和比你聪明的人一起工作
我认识很多前端工程师更想成为自由职业者,比起那些后端工程师,这可能是因为前端工程师更多的是自学。
自学比不上跟聪明的人一起,因为聪明的人会互相触发灵感并且review code。
我建议在职业生涯的开始要在一个有经验,聪明的团队一起工作。
如果你最终选择了自由工作,为开源社区做一些贡献,这会让你受益匪浅。
重造轮子
重复造轮子很蠢,但是会学习到很多。我不是说不使用第三方库,很多第三方库是经过时间证明的可靠完美的,但是我这里讨论的是怎么从good 到 great ,很多伟大的人都是这些库的贡献者或者维护者。
很多人都会问,我接下来该写一些什么,那么为什么不自己动手实现一些著名的js or css 库呢,这样做最棒的一部分在于,当你卡住的时候,永远有源码可以看。
写出你学到了什么
最后,你要学会记下了,你都学到了什么,最好的理由是这帮你更好的理解,如果你解释不了,可能你自己就没有那么明白。很多时候你自己并不清楚这一点直到你试图把这些记下来。
从我们经验来看,写作,演讲,demo是最好的帮你完全理解的方式。即使没有人看你写的东西,这个过程也是很值得的!!!
everybody should read this!
really help you be great!!