高级工程师应具有的能力

做者:Cat Chen
连接:http://www.zhihu.com/question/22420900/answer/21458811
来源:知乎
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。

  我以为任何一方面的具体经验都不重要,重要的是思惟方式和学习能力。首先说思惟方式,那就是不为本身设限,不会想着本身是前端工程师,因此后端的东西我就一点也不碰。Facebook 的工程师,级别越高就须要保持越大的影响力。如何创造更大的影响力,就是寻找当前杠杆效应最明显的问题来解决。有些问题你解决了的话,投入进去的时间每小时能换回来一千美圆;有些问题你解决了的话,投入进去的时间每小时能换回来一百万美圆。然而哪些问题更值得解决,这是动态的,每每还存在衰减效应。若是如今性能瓶颈在后端,你作了一个季度两个季度优化后,瓶颈就已经不在后端了,你再优化下去衰减效应就会愈来愈明显。等瓶颈变成前端了,你是否是就说由于你不懂,因此不肯意碰?那就至关于寄望于公司有个前端很懂性能优化的人来解决,但若是公司没有这样的人那就没有人来解决了。   Facebook 的众多海报当中,有一张写的是「任何一个 Facebook 的问题,都不是别人的问题」。有问题,你就须要去评估是否值得解决。若是值得解决,你就应该着手去解决,而不是假设公司内会有另一我的比你更合适解决这个问题。这时候极可能你就须要去作你历来没有作过的事情,须要学习你本来可能彻底不懂的技术。若是你是个专门作数学模型的博士,加入 Facebook 本来是打算作搜索结果优化的,结果发现这不是最急需解决的问题,JavaScript 性能才是最须要解决的问题,你怎么办?若是你觉得 Facebook 须要的是你作数学模型的经验,那你就错了。Facebook 须要的是你完成博士学位的学习能力。你历来没作过 JavaScript 而且以为 JavaScript 很恶心?正确的作法是当即在网上买几本 JavaScript 入门的书连夜看完,而后着手分析性能瓶颈而且解决。在你完成手动优化后,你还能够思考一下可否把这作成自动化,例如说在代码提交时分析 JavaScript 语法树而且指出可能成为性能瓶颈的地方,又或者说从用户浏览器那里收集性能数据扔到 Hive 而后再从中分析产生瓶颈的特征。这些均可能涉及到一些你没有作过也没有学过的东西,但问题摆在那里你就须要去解决,而不管这要求你去钻研什么。这就是我所说的学习能力。   这是高级工程师和初级工程师的主要差距。尽管在高级到初级这一维度上,美国工程师和中国工程师是有重叠的,但美国的教育体系和行业传统使得美国应届生比通常中国工程师更偏向于高级那一端。美国学生的优点在于,他们的教育体系让他们习惯面对开放性问题。一家公司万千问题当中,此时此刻哪个最值得解决?这不是中国工程师擅长的问题,由于实在是太开放了。中国教育让人擅长在给定条件下解决问题,太开放反而不知道从何入手。此外由于绝大多数文献都是英文的,因此要钻研什么对于能读懂英文的人来讲均可以很是成体系的学习,这对于不少拒绝阅读英文的中国工程师来讲很不利。拒绝阅读英文意味着永远只能接受别人的二手资料,对于不少概念的理解只能停留在技师的层面,而没法上升到工程师或者科学家的层面。
相关文章
相关标签/搜索