你的位置:首頁(yè) > 測(cè)試測(cè)量 > 正文

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

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

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

關(guān)閉

?

關(guān)閉