你的位置:首頁 > 測試測量 > 正文

國內(nèi)工程師學(xué)學(xué)!谷歌工程師是如何練就過硬本領(lǐng)的?

發(fā)布時(shí)間:2014-12-27 責(zé)任編輯:sherryyu

【導(dǎo)讀】一位在谷歌從事工程師的朋友為大家?guī)砹斯雀韫こ處熚幕械膸讉€(gè)核心原則,國內(nèi)工程師都來瞧瞧別人是如何練就過硬的本領(lǐng)的。同時(shí)也看看國內(nèi)外的差距到底有多大?
 
我大學(xué)畢業(yè)后便加入Google的搜索質(zhì)量團(tuán)隊(duì),在2006年中旬到2008年中旬在其工作,在這期間,公司的規(guī)模從8000人上漲到20000人。在我的第一個(gè)項(xiàng)目,我同兩位極具天賦的工程師一起工作,短短六個(gè)月,我們原型化、測試并啟動(dòng)了網(wǎng)站的新功能,每天向數(shù)百萬用戶在google.com上展示相關(guān)搜索。作為團(tuán)隊(duì)的新員工,自始至終最突出的感受是在這樣的環(huán)境中,公司如何能使像我這樣的新工程師快速成長起來。
  
如果這不是Google工程文化的關(guān)鍵要素,對于我們這樣規(guī)模的團(tuán)隊(duì)在如此短時(shí)間內(nèi)發(fā)布新特性是極為困難的。這些要素能夠讓我迅速地獲得Google的代碼庫、工具和基礎(chǔ)設(shè)施。它們也是使公司能夠達(dá)到今天50000雇員規(guī)模的原因。
  
一些前谷歌員工可能抱怨公司變得遲緩和官僚,但是不可否認(rèn)它已經(jīng)獲得很高的成就和很大的規(guī)模,在《財(cái)富》評(píng)選的100家最適合工作的公司中名列前茅。
  
這有我從谷歌工程文化中獲得的六個(gè)核心原則,你可能能夠從中獲益:
工程師
把工程資源用于共享工具和抽象概念。在早期谷歌在工具和抽象概念上大力投資,例如Protocol Buffers,MapReduce,BigTable和其他在工程中自始至終都會(huì)用到的東西。解決問題好的態(tài)度并使得每個(gè)人能夠接受已經(jīng)帶來巨大的收益。每個(gè)團(tuán)隊(duì)都花費(fèi)較少的心理周期選擇使用哪個(gè)工具,專注于工具的團(tuán)隊(duì)能夠更關(guān)注提升工程生產(chǎn)力,和改善已經(jīng)使用的工具和服務(wù)。每個(gè)團(tuán)隊(duì)可能使用截然不同的工具鏈,這也意味著當(dāng)你學(xué)習(xí)了基本單元結(jié)構(gòu)后,更容易理解許多項(xiàng)目背后的設(shè)計(jì)。這個(gè)方法的負(fù)面影響就是有些時(shí)候你可能感覺你的case是被強(qiáng)行塞入一個(gè)特別的良好支持的工具,即使它不是最好的。
  
在新工程師培訓(xùn)中投資可重復(fù)使用的訓(xùn)練材料。我在谷歌能夠迅速變得如此高產(chǎn)的一個(gè)原因是公司在培訓(xùn)材料上面花了大力去投資,其稱之為Codelabs,Codelabs包括了公司的核心抽象模型,解釋它們?yōu)槭裁幢辉O(shè)計(jì)出來,突出代碼庫的相關(guān)片段,以及通過實(shí)現(xiàn)練習(xí)驗(yàn)證理解它們。如果沒有它,我將會(huì)花更多的時(shí)間來學(xué)習(xí)各種我需要去了解的各種技術(shù),這也意味著我的隊(duì)員要花費(fèi)更多的精力向我去解釋它們。我在谷歌這樣積極的經(jīng)歷,強(qiáng)有力的影響了我在后來的Quora新人培訓(xùn)過程中大力推崇Codelabs使用的決定。
  
標(biāo)準(zhǔn)化編碼約定。每個(gè)關(guān)于空格、大小寫、行長度、是否使用智能指針等約定,可能似乎是不重要的,但是到了谷歌這樣的大規(guī)模時(shí)會(huì)帶來巨大的影響。我不是第一次承認(rèn),當(dāng)代碼校驗(yàn)人員挑刺我的代碼令我感到十分不愉快,就因?yàn)槲覜]有正確的縮進(jìn)或在行長度超出了規(guī)定的兩個(gè)字符。但是因?yàn)榇蠹叶甲裱瑯拥募s定,使得瀏覽代碼變得大大容易。當(dāng)更換團(tuán)隊(duì)或在跨部門項(xiàng)目中工作時(shí),這幾乎沒有額外支出去學(xué)習(xí)新團(tuán)隊(duì)的約定。當(dāng)團(tuán)隊(duì)規(guī)模很小時(shí),約定是那種很容易被忽視的東西,但是在代碼和團(tuán)隊(duì)規(guī)模逐漸壯大在這方面越來越做出改變,這樣你事實(shí)上希望從始至終都是一致。如果可能早期在約定一致性上保持一致,或者使用谷歌開源的風(fēng)格指南。
  
通過代碼復(fù)審(Code Review)提升代碼質(zhì)量。對每次改變進(jìn)行代碼復(fù)審減緩了迭代更新的速度,但是提升了代碼質(zhì)量,新工程師收到反饋后,他們需要迅速的采取最佳的實(shí)踐并專注于公認(rèn)的代碼質(zhì)量等級(jí)??傮w的代碼質(zhì)量越高,也就意味著新工程師在模仿周圍人員的代碼同時(shí),初期就會(huì)寫出更加簡潔的代碼。因此,代碼復(fù)審有助于公司在較大規(guī)模上位置較高的軟件質(zhì)量。
  
用正確數(shù)據(jù)解決很多問題。谷歌研發(fā)主管Peter Norvig經(jīng)常談到在解決復(fù)雜問題上“不合理的數(shù)據(jù)有效性”。正確的數(shù)據(jù)能夠幫助你了解用戶,劃分辦公室政治,解決爭論,并讓你跟上進(jìn)度。開發(fā)日志和數(shù)據(jù)基礎(chǔ)工具,如Sawzall和MapReduce,使谷歌的工程師從大量數(shù)據(jù)中篩選出來變?yōu)榭赡堋?/div>
  
自動(dòng)化測試來衡量你的代碼。谷歌有十分強(qiáng)烈的單元測試文化,“廁所測試”就是一個(gè)例子,差不多我每做一次代碼的改動(dòng)都伴隨一個(gè)單元測試,代碼復(fù)審員將會(huì)嚴(yán)格地檢查他們。這讓開發(fā)變慢,但它也意味著成百上千的工程師可以改變代碼庫中的同一部分而不會(huì)犧牲過多的質(zhì)量和可靠性。谷歌以同樣的方式在共享工具上進(jìn)行投入,它也會(huì)共享測試框架,并通過最好的測試實(shí)踐讓大家寫測試變得更容易。
  
當(dāng)我后來在Ooyala和Quora幫助他們構(gòu)建團(tuán)隊(duì)和產(chǎn)品時(shí),谷歌的工作強(qiáng)烈地讓我思考,在哪些地方什么會(huì)形成良好的工程文化。然而,在谷歌這樣規(guī)模的公司工作好并不一定意味著會(huì)在不同機(jī)構(gòu)的不同發(fā)展時(shí)期的工作同樣會(huì)好。每個(gè)工程決策都包括一系列權(quán)衡,但是谷歌工程文化提供了一部分權(quán)衡,而你可以從這里開始。
要采購工具么,點(diǎn)這里了解一下價(jià)格!
特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
?

關(guān)閉

?

關(guān)閉