做者:Cat Chen
連接:http://www.zhihu.com/question/22420900/answer/21458811
來源:知乎
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
我以爲任何一方面的具體經驗都不重要,重要的是思惟方式和學習能力。首先說思惟方式,那就是不爲本身設限,不會想着本身是前端工程師,因此後端的東西我就一點也不碰。Facebook 的工程師,級別越高就須要保持越大的影響力。如何創造更大的影響力,就是尋找當前槓桿效應最明顯的問題來解決。有些問題你解決了的話,投入進去的時間每小時能換回來一千美圓;有些問題你解決了的話,投入進去的時間每小時能換回來一百萬美圓。然而哪些問題更值得解決,這是動態的,每每還存在衰減效應。若是如今性能瓶頸在後端,你作了一個季度兩個季度優化後,瓶頸就已經不在後端了,你再優化下去衰減效應就會愈來愈明顯。等瓶頸變成前端了,你是否是就說由於你不懂,因此不肯意碰?那就至關於寄望於公司有個前端很懂性能優化的人來解決,但若是公司沒有這樣的人那就沒有人來解決了。 Facebook 的衆多海報當中,有一張寫的是「任何一個 Facebook 的問題,都不是別人的問題」。有問題,你就須要去評估是否值得解決。若是值得解決,你就應該着手去解決,而不是假設公司內會有另一我的比你更合適解決這個問題。這時候極可能你就須要去作你歷來沒有作過的事情,須要學習你本來可能徹底不懂的技術。若是你是個專門作數學模型的博士,加入 Facebook 本來是打算作搜索結果優化的,結果發現這不是最急需解決的問題,JavaScript 性能纔是最須要解決的問題,你怎麼辦?若是你覺得 Facebook 須要的是你作數學模型的經驗,那你就錯了。Facebook 須要的是你完成博士學位的學習能力。你歷來沒作過 JavaScript 而且以爲 JavaScript 很噁心?正確的作法是當即在網上買幾本 JavaScript 入門的書連夜看完,而後着手分析性能瓶頸而且解決。在你完成手動優化後,你還能夠思考一下可否把這作成自動化,例如說在代碼提交時分析 JavaScript 語法樹而且指出可能成爲性能瓶頸的地方,又或者說從用戶瀏覽器那裏收集性能數據扔到 Hive 而後再從中分析產生瓶頸的特徵。這些均可能涉及到一些你沒有作過也沒有學過的東西,但問題擺在那裏你就須要去解決,而不管這要求你去鑽研什麼。這就是我所說的學習能力。 這是高級工程師和初級工程師的主要差距。儘管在高級到初級這一維度上,美國工程師和中國工程師是有重疊的,但美國的教育體系和行業傳統使得美國應屆生比通常中國工程師更偏向於高級那一端。美國學生的優點在於,他們的教育體系讓他們習慣面對開放性問題。一家公司萬千問題當中,此時此刻哪個最值得解決?這不是中國工程師擅長的問題,由於實在是太開放了。中國教育讓人擅長在給定條件下解決問題,太開放反而不知道從何入手。此外由於絕大多數文獻都是英文的,因此要鑽研什麼對於能讀懂英文的人來講均可以很是成體系的學習,這對於不少拒絕閱讀英文的中國工程師來講很不利。拒絕閱讀英文意味着永遠只能接受別人的二手資料,對於不少概念的理解只能停留在技師的層面,而沒法上升到工程師或者科學家的層面。