保持干凈
Google崇尚“有序混亂”的概念,這種思想擴(kuò)展到我們的工作場所,由此造成的情形說好聽點(diǎn)兒是“凌亂”,說難聽點(diǎn)兒就是“豬窩”。
衣帽間里有淋浴和桑拿設(shè)施。一進(jìn)來,房間里就充斥著各種氣味,臟兮兮的運(yùn)動(dòng)衫、磨損的護(hù)膝、沾著泥土的冰球和沒了頭的冰球桿、防滑層黏合劑、除臭劑分配器、扯碎的內(nèi)衣以及難聞的須后水都混合起來。Google后來在衣帽間里提供了毛巾,還安裝了瑞典生產(chǎn)的低耗能洗衣機(jī),不過洗衣機(jī)要一個(gè)星期才會(huì)完成一個(gè)循環(huán) 它采用一套成熟的機(jī)制,會(huì)在即將洗完的時(shí)候發(fā)出通知,洗衣機(jī)不洗運(yùn)動(dòng)襪和發(fā)霉的毛巾。你可以想象一個(gè)兄弟會(huì)的怪人跑到保險(xiǎn)公司里要求享受棚戶區(qū)居民的權(quán)利時(shí)的場景。
只有工程部門還在一絲不茍地保持衛(wèi)生。不是說他們的空間真正干凈 他們在生活中顯然都是野生動(dòng)物 而是說他們工作原理上的干凈。
在諸如源頭控制和編譯器警告等方面,烏爾斯堅(jiān)持采用了他在工業(yè)安裝方案中學(xué)來的最佳做法。
烏爾斯對(duì)我說:“我們必須保證在編譯器發(fā)出警告的情況下,它會(huì)立即停止工作,這樣你就無法坐視不理?!彼麑⒆钪匾脑囟ㄐ偷揭粋€(gè)風(fēng)格指南中,并授權(quán)給克雷格·西爾弗斯坦貫徹執(zhí)行。
克雷格告訴過我說:“我不想要什么風(fēng)格指南,但是烏爾斯對(duì)此堅(jiān)定不移。”
最主要的問題是使用哪種編程語言。克雷格想使用C語言,而烏爾斯更傾向于C++。最后采用了烏爾斯的選擇,不過烏爾斯同意Google編碼器將不使用“C++中不好的部分”。
我曾經(jīng)問過克雷格:“C++中不好的部分是指什么?”
克雷格板著臉說:“大部分?!?/p>
克雷格認(rèn)為Google需要一種凝聚力,以此避免多余的努力和無謂的爭論,從而維護(hù)標(biāo)準(zhǔn),抓住重點(diǎn)并在回顧總結(jié)時(shí)提供反饋。他把形成那種凝聚力作為奮斗目標(biāo),他想要成為“無所不知的人”。
克雷格回憶時(shí)說道:“當(dāng)我們有大約100人的時(shí)候,我還得到處走動(dòng),去跟每個(gè)人談話。我會(huì)說, 你的工作還好嗎?需要什么幫助嗎? 一些人對(duì)此很反感, 這個(gè)家伙總是打擾我。他想干嗎? 烏爾斯不得不把我拉到一邊讓我不要再問?!笨死赘褚庾R(shí)到,“他們并不需要受到那么多關(guān)注。大家彼此相隔不遠(yuǎn),他們知道該和誰說話,大家的溝通交流十分通暢?!?/p>
更重要的事情就是編碼了。無論什么時(shí)候,只要有人檢查代碼庫變化 無論變化多么小 克雷格都會(huì)開始瀏覽每個(gè)自動(dòng)警報(bào),尋找潛在問題。但是一個(gè)單獨(dú)的校對(duì)程序跟不上設(shè)計(jì)的產(chǎn)出增長。因此,烏爾斯創(chuàng)立了一個(gè)正式的代碼檢查程序。
克雷格對(duì)我說:“你要去找一個(gè)好的工程實(shí)踐作為文化運(yùn)營的試金石,而對(duì)于我們來說,這個(gè)試金石就是代碼檢驗(yàn)。”要開啟一個(gè)代碼檢驗(yàn)進(jìn)程,編碼器會(huì)向在線設(shè)計(jì)文件發(fā)送一個(gè)指針。任何人都可以對(duì)此進(jìn)行評(píng)論,但是正式審核員必須要對(duì)審核結(jié)果簽字確認(rèn)。
由此帶來的好處顯而易見。工程師羅恩·多林告訴我說:“在一開始發(fā)現(xiàn)問題比后來發(fā)現(xiàn)要省心一百倍?!?/p>
隨著Google的成長,并不是所有人都認(rèn)同他們的代碼需要證明或者他們有責(zé)任檢查其他人的工作??死赘窕貞洉r(shí)說:“我們添加了一個(gè)程序,可以阻止沒經(jīng)過檢驗(yàn)就提交的代碼,不過要是你撒謊的話,這個(gè)程序也沒辦法?!?/p>
為了應(yīng)付這個(gè)程序,大家會(huì)對(duì)代碼進(jìn)行粗略的檢驗(yàn)。克雷格告訴我說:“我發(fā)出了龐大的代碼,他們又發(fā)了回來并說 看起來不錯(cuò) 。我覺著他們不應(yīng)該這么簡單地評(píng)價(jià)我發(fā)出的代碼?!?/p>