日本在线看黄a美女久草|日本动漫亚洲在线一区|日韩人妻无码免费视频|A√有码中文字幕|日韩一级片视频热久久久|一区二区三区四区精品无码在线|亚洲AV成人无码一二三app|亚洲综合图片绯色|91极品人妻在线网站|国产成人精品一区二三区四区五区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
專欄 正文
發(fā)私信給董飛
發(fā)送

1

如何打造工程師文化?這10件事情值得去做

本文作者: 董飛 2016-05-18 11:24
導(dǎo)語(yǔ):從過(guò)去七年跨越谷歌,Ooyala和Quora的工作,作者總結(jié)了為建立一個(gè)良好的工程文化,一個(gè)團(tuán)隊(duì)可以做的十件事情。

雷鋒網(wǎng)按:本文作者Edmond Lau,公號(hào)“董老師在硅谷”翻譯首發(fā)。

如何打造工程師文化?這10件事情值得去做

我作為面試官最喜歡問(wèn)工程師的問(wèn)題是:在他們以前的公司,他們喜歡和不喜歡的關(guān)于工程師文化的事是什么?我采訪了500多人——其中許多來(lái)自頂尖高科技公司,如Facebook,谷歌,亞馬遜,Palantir,和Dropbox,隨著時(shí)間的推移,這種面試問(wèn)題也告訴我:優(yōu)秀工程師喜歡的和盡量避免的地方。根據(jù)采訪答復(fù)和我個(gè)人經(jīng)驗(yàn),從過(guò)去七年跨越谷歌,Ooyala和Quora的工作,我總結(jié)出為建立一個(gè)良好的工程文化,一個(gè)團(tuán)隊(duì)可以做的十件事情

1、優(yōu)化迭代速度

快速迭代有助于提高工作積極性和興奮度。一些工程師在面試時(shí)說(shuō)到他們離開(kāi)公司的原因,其中最常見(jiàn)的也最令人沮喪的是基礎(chǔ)設(shè)施和繁冗流程阻礙他們部署代碼或者上線功能

在組織上,快速迭代讓工程師和設(shè)計(jì)師更靈活自主地作日常決策。我在谷歌,任何用戶可見(jiàn)的搜索結(jié)果改變,即使是低流量的實(shí)驗(yàn),也需要瑪麗莎·梅耶在每周UI審查批準(zhǔn)。雖然這允許谷歌保護(hù)它的搜索品牌,但它明顯阻礙了創(chuàng)新。優(yōu)化迭代速度也意味著,按照明確定義的流程推出產(chǎn)品,避免投入大量時(shí)間后意外發(fā)生。

優(yōu)化迭代速度意味著建立持續(xù)部署以快速驗(yàn)證,提高測(cè)試覆蓋率,減少構(gòu)建和網(wǎng)站宕機(jī)次數(shù),快速單元測(cè)試,并鼓勵(lì)大家來(lái)運(yùn)行,快速增量編譯和重新加載,以縮短開(kāi)發(fā)時(shí)間。持續(xù)部署,提交到線上特別重要。比如在Quora它提供的迭代速度至少在小工程隊(duì)利大于弊(線上出錯(cuò)的風(fēng)險(xiǎn))。人們更興奮地看到功能和修復(fù)Bug是因?yàn)楹芸炜吹搅藢?shí)時(shí)流量的變化。這要比超過(guò)一周或成批的代碼提交,要更容易推斷和精確定位錯(cuò)誤源的位置。

團(tuán)隊(duì)智慧,快速迭代的速度意味著有強(qiáng)有力的領(lǐng)導(dǎo)者,幫助協(xié)調(diào)和推動(dòng)團(tuán)隊(duì)的工作。在決定關(guān)鍵點(diǎn)上負(fù)責(zé)人需要有效地作出決定,并承諾他們的選擇。借用比爾·沃爾什(領(lǐng)導(dǎo)49人隊(duì)3次進(jìn)超級(jí)碗)的一句話:強(qiáng)有力的領(lǐng)導(dǎo)者需要“承諾,引爆,恢復(fù)”,這意味著承諾攻擊計(jì)劃,執(zhí)行它,然后看反應(yīng)結(jié)果。優(yōu)柔寡斷的團(tuán)隊(duì)只會(huì)導(dǎo)致個(gè)人努力白費(fèi)。

2、盡量自動(dòng)化

在技術(shù)講座“規(guī)模化Instagram”上,Instagram的聯(lián)合創(chuàng)始人邁克·克里格引“優(yōu)化最少的操作負(fù)擔(dān)”作為一個(gè)重要的教訓(xùn),領(lǐng)導(dǎo)他的13人團(tuán)隊(duì)將用戶增長(zhǎng)到幾千萬(wàn)。 產(chǎn)品的增長(zhǎng)意味每個(gè)工程師的操作負(fù)擔(dān)加重,如用戶跟工程師或者特定功能跟工程師的比率。 像Facebook號(hào)稱每個(gè)工程師支持超過(guò)100萬(wàn)的用戶比例指標(biāo)。

自動(dòng)化解決方案和讓腳本去重復(fù)執(zhí)行任務(wù)很重要,因?yàn)樗鼈兘夥殴こ虉F(tuán)隊(duì),讓他們?yōu)閷?shí)際產(chǎn)品工作。確保在流量高峰期,如果有服務(wù)失敗并自動(dòng)重啟的情況下,能找到替代者是管理大而復(fù)雜產(chǎn)品的明智方案。在短期內(nèi)可以對(duì)應(yīng)用做快速修復(fù),而長(zhǎng)期還是要依賴自動(dòng)化測(cè)試,這需要權(quán)衡。

Etsy的座右銘是“衡量所有,衡量一切”。支持像開(kāi)源監(jiān)控和制圖工具graphite和statsd突出自動(dòng)化 -——即自動(dòng)化必須由數(shù)據(jù)和監(jiān)控驅(qū)動(dòng)。如果沒(méi)有監(jiān)控和日志你怎么知道什么事情錯(cuò)了,為什么錯(cuò)。自動(dòng)化是困難的。一個(gè)后續(xù)的座右銘是“衡量所有,衡量一切,并盡可能自動(dòng)化。

3、建立合理的軟件抽象

我的麻省理工學(xué)院教授和本科生研究顧問(wèn)丹尼爾·杰克遜說(shuō)的軟件抽象的重要性:

"選擇正確的方式,程序化自然而然地設(shè)計(jì);模塊化就是有小而簡(jiǎn)單的界面; 新功能在不影響全局的情況下產(chǎn)生。要是搞錯(cuò)的話,程序?qū)⑹且幌盗械挠憛挼目樱航涌诤鼙孔疽驗(yàn)樗麄儫o(wú)法適應(yīng)一些意料之外的交互,即使是最簡(jiǎn)單的改動(dòng)也將很難維護(hù)。"

在谷歌,什么讓數(shù)千名工程師建立可擴(kuò)展的系統(tǒng)——因?yàn)樗麄冇蟹浅B斆鞯墓こ處熛窠芊颉さ隙骱蜕=堋じ瘳斘痔?,?chuàng)建了簡(jiǎn)單但豐富的抽象,如MapReduce,SSTable,Protocol Buffer等。什么讓Facebook工程這么支持大規(guī)?!且?yàn)閷W⒂诤诵模瑯酉矚g抽象和簡(jiǎn)單,Thrift, Scribe, Hive。是什么讓設(shè)計(jì)人員能夠在Quora有效構(gòu)建產(chǎn)品,Webnode,Livenode也是基于同樣的理解。

保持核心抽象的簡(jiǎn)單和減少自定義解決方案并增加團(tuán)隊(duì)熟悉度和對(duì)專業(yè)知識(shí)的抽象。日益普及的系統(tǒng)像Memcached,Redis,MongoDB等都是降低建立定制存儲(chǔ)和緩存系統(tǒng)的必要性。團(tuán)隊(duì)重點(diǎn)轉(zhuǎn)移到少數(shù)核心抽象,而不是分裂在很多臨時(shí)解決方案,讓公共庫(kù)更穩(wěn)健,監(jiān)控更智能,性能更易理解,測(cè)試更全面。所有這一切都有助于搭建一個(gè)簡(jiǎn)單的系統(tǒng),降低操作負(fù)擔(dān)。

4、注重代碼審查,編寫高代碼質(zhì)量

維持高品質(zhì)的代碼庫(kù)增加了整個(gè)工程團(tuán)隊(duì)的工作效率。整齊的代碼更容易便捷發(fā)展和維護(hù),更適應(yīng)變化,不容易引入錯(cuò)誤。健康的代碼審查過(guò)程使之成為可能。

建立及時(shí)代碼審查流程,不管是預(yù)提交或提交后,代碼審查有很多必要性。首先,知道有人會(huì)檢查你的代碼,提交寫得不好的代碼可能會(huì)辜負(fù)你的隊(duì)友。那些難以維護(hù),或未經(jīng)測(cè)試的代碼是一種壓力。第二,代碼審查也提供了評(píng)審和相互學(xué)習(xí)編寫更好代碼的機(jī)會(huì)。

代碼審查更容易接觸到其他工程團(tuán)隊(duì)成員,評(píng)論也有很多促進(jìn)作用:

a)增進(jìn)一段時(shí)間內(nèi)審查代碼的責(zé)任感;

b)允許團(tuán)隊(duì)成員——特別新手——觀摩別人的好代碼;

c)加快最佳編碼實(shí)踐的傳播。

有種說(shuō)法,靈活的團(tuán)隊(duì)沒(méi)多少時(shí)間花費(fèi)在代碼審查而忽視了技術(shù)債務(wù),可以很容易地從寫得不好的代碼積累。 Ooyala公司,在創(chuàng)業(yè)早期就為了完成盡可能多的功能而忽略代碼審查;其結(jié)果是,雖然最初的產(chǎn)品更迅速地?fù)碛辛耸袌?chǎng),但代碼修改變得很痛苦,我們花了一年多時(shí)間僅僅是改寫脆弱的代碼,以償還技術(shù)債務(wù)。

谷歌預(yù)先對(duì)所有的代碼進(jìn)行審查,但規(guī)模較小的團(tuán)隊(duì)并不需要那么全面和嚴(yán)格,因?yàn)椴皇撬械拇a都需要使用相同的標(biāo)準(zhǔn)審查。 Ooyala公司后來(lái)采取了措施——通過(guò)電子郵件通知核心處危險(xiǎn)的變化。在Quora,我們用Phabricator對(duì)所有的代碼進(jìn)行審查,大多后提交,并采用了不同的標(biāo)準(zhǔn)模型,比如控制器代碼和視圖代碼; 對(duì)于敏感的代碼或新工程師的代碼,我們要么做預(yù)提交的評(píng)論或試圖在幾個(gè)小時(shí)內(nèi)去被提交的代碼中查看它們。

5、保持一個(gè)相互尊重的工作環(huán)境

同事之間的尊重構(gòu)成開(kāi)放交流的基礎(chǔ)。靠譜的想法往往通過(guò)大家的辯論獲得,這種挑戰(zhàn)也是令人感覺(jué)很舒服的方式。人們不爽的是重要反饋沒(méi)有及時(shí)回應(yīng)。

1948年,亞歷克斯·奧斯本概述了過(guò)去幾十年中在工作環(huán)境中流行的方法:參與者走到一起,拋開(kāi)批評(píng)和負(fù)面的反饋,共同凝聚在一起不用擔(dān)心被評(píng)判,頭腦風(fēng)暴會(huì)議。最近的心理學(xué)研究已經(jīng)開(kāi)始推翻奧斯本的做法,表明在頭腦風(fēng)暴會(huì)議中,鼓勵(lì)辯論實(shí)際上避免了群體思維并產(chǎn)生了更有效的思路。鑒于這一研究,一個(gè)相互尊重的環(huán)境變得更加重要,攻擊僅僅是觀點(diǎn)上的而不是針對(duì)個(gè)人。

工程往往跨越廣泛的領(lǐng)域(系統(tǒng),機(jī)器學(xué)習(xí),產(chǎn)品等),而不是每個(gè)人在每個(gè)領(lǐng)域都有相同的專業(yè)知識(shí)。其實(shí)一個(gè)強(qiáng)大的團(tuán)隊(duì)?wèi)?yīng)該具備:在某些領(lǐng)域都有能干的牛人,即使他們最終會(huì)被替代。這有時(shí)很麻煩,讓一個(gè)系統(tǒng)工程師來(lái)評(píng)估產(chǎn)品工程師的能力,但在一個(gè)健康的工程師文化中,尊重這些差異很重要,而不是完全根據(jù)自己的優(yōu)勢(shì)來(lái)判斷。

6、建立共享代碼所有權(quán)

雖然有些人很自然地就精通代碼庫(kù)或基礎(chǔ)設(shè)施的各個(gè)部分,但沒(méi)有一個(gè)人可以覺(jué)得他們擁有其中任何一件或者是某一件的唯一維護(hù)者。雖然有人能在一些領(lǐng)域成為專家,在短期內(nèi)有成效,但這種做法最終傷害長(zhǎng)期利益。

在組織上,共享代碼所有權(quán)提供了三個(gè)好處。

首先,保持因子8大于1可以減輕壓力和降低團(tuán)隊(duì)維護(hù)者離開(kāi)的風(fēng)險(xiǎn)。這也使人很難在休息時(shí)間無(wú)憂。我清楚記得,當(dāng)我在夏威夷火山上徒步旅行度假時(shí),得到報(bào)警,因?yàn)槲沂枪镜娜罩咎幚砥鞯奈ㄒ痪S護(hù)者。

其次,共享所有權(quán)讓工程師不限制在特定區(qū)域,以促進(jìn)新的見(jiàn)解。它讓工程師們從某些項(xiàng)目上解放出來(lái),并鼓勵(lì)他在多樣的項(xiàng)目上工作,這有助于保持工作的趣味性,并提升員工學(xué)習(xí)的積極性。從長(zhǎng)遠(yuǎn)來(lái)看,它降低了組織風(fēng)險(xiǎn)——一些工程師一旦感到停滯將會(huì)決定離開(kāi)。

第三,共享所有權(quán)還設(shè)置了多個(gè)團(tuán)隊(duì)成員聚焦在高優(yōu)先級(jí)的問(wèn)題上(敏捷開(kāi)發(fā)的一種),為更迅速地完成戰(zhàn)略目標(biāo)奠定了基礎(chǔ)。而孤立的所有權(quán),責(zé)任通常落在一兩個(gè)人肩上。

很多工程組織犯的錯(cuò)誤是為時(shí)過(guò)早地將整個(gè)團(tuán)隊(duì)分成子團(tuán)隊(duì)。子團(tuán)隊(duì)會(huì)形成責(zé)任的阻礙,并很難去打破所有權(quán)的墻,因?yàn)閭€(gè)人可能會(huì)被其子團(tuán)隊(duì)的目標(biāo)進(jìn)行評(píng)估。 Ooyala有很多小團(tuán)隊(duì),我很珍惜與一些其他團(tuán)隊(duì)的工作機(jī)會(huì);他們使用敏捷開(kāi)發(fā),重心放在共享代碼所有權(quán),使得工作幸福感和生產(chǎn)力更佳。 在Quora的初期,我喜歡的一個(gè)方面是這里更強(qiáng)調(diào)項(xiàng)目而不是團(tuán)隊(duì),讓我有機(jī)會(huì)合作很多不同項(xiàng)目:從用戶增長(zhǎng),機(jī)器學(xué)習(xí),工具,推薦,分析,網(wǎng)站的速度,和垃圾檢測(cè)都有。

7、投資自動(dòng)化測(cè)試

單元測(cè)試和集成測(cè)試覆蓋率是管理一個(gè)大的代碼庫(kù)與一大群人或產(chǎn)品的唯一可擴(kuò)展的方式。自動(dòng)化測(cè)試提供了對(duì)提高代碼質(zhì)量的大規(guī)模重構(gòu)的信心和有意義的保護(hù)。缺乏嚴(yán)格的自動(dòng)化測(cè)試,需要手動(dòng)測(cè)試無(wú)論是對(duì)工程團(tuán)隊(duì)還是外包測(cè)試團(tuán)隊(duì),都是令人害怕的,很容易形成恐懼改善代碼的文化,因?yàn)樗锌赡芷茐脑写a秩序。

在實(shí)踐中,自動(dòng)化測(cè)試是對(duì)持續(xù)部署工作團(tuán)隊(duì)成長(zhǎng)的要求。代碼庫(kù)規(guī)模隨著時(shí)間的推移增長(zhǎng),但熟悉的代碼庫(kù)的數(shù)量會(huì)隨團(tuán)隊(duì)成員新人加入而減少。測(cè)試和驗(yàn)證最容易被原代碼作者完成,因?yàn)樵谒麄兡X子里還是清晰的,而不是稍后幾個(gè)月或幾年才嘗試修改代碼的人。鼓勵(lì)單元測(cè)試是讓作者為自己的工作負(fù)責(zé)。

8、分配20%的時(shí)間

Gmail是保羅·布赫海特的20%的項(xiàng)目,第一個(gè)版本在一天搞定。 谷歌新聞,谷歌公交,和谷歌建議也是推出的20%的項(xiàng)目。我用20%的時(shí)間,在谷歌寫一個(gè)Python框架,使得它更容易建立搜索頁(yè)面演示。而谷歌的20%的時(shí)間在創(chuàng)業(yè)初期可能降低生產(chǎn)力,但是讓工程師們花20%的時(shí)間在做某件事情而不是他們的固有的產(chǎn)品規(guī)劃,仍然是小型工程組織的創(chuàng)新?lián)u籃。

Ooyala公司沒(méi)有正式的20%的時(shí)間,但我花了一些,寫了一個(gè)命令行構(gòu)建工具Flex和ActionScript,加快了團(tuán)隊(duì)構(gòu)建時(shí)間。正當(dāng)Adobe的Flex Builder工具降級(jí)之時(shí)我完成了它,在工程團(tuán)隊(duì)超過(guò)兩倍大小時(shí)該工具仍然在使用。 Atlassian公司在嘗試一年后通過(guò)20%的時(shí)間。Facebook和Ooyala公司后來(lái)又增加了一個(gè)20%時(shí)間:是周期性的黑客比賽——規(guī)則是,你可以做任何東西,除了你的正常項(xiàng)目的工作。

自上而下對(duì)產(chǎn)品進(jìn)行規(guī)劃,對(duì)公司的總體方向是重要的,不能指望從工程師中冒出很多的想法。只有工程師對(duì)他們20%的時(shí)間和專注的項(xiàng)目有負(fù)責(zé)任的態(tài)度,這些項(xiàng)目有很大的向前發(fā)展的可能。沒(méi)有官方的20%的時(shí)間,它仍然是可能的,但是對(duì)工程師和設(shè)計(jì)師來(lái)說(shuō)有可能去嘗試瘋狂的想法——也基本上都找周末或假期做。

9、建立學(xué)習(xí)和持續(xù)改進(jìn)的文化

持續(xù)學(xué)習(xí)和得到充分的挑戰(zhàn)是必須的,因?yàn)樾睦韺W(xué)教授米哈里·米哈伊稱所謂的“心流”表明,一個(gè)人完全集中在他們做的事情上,甚至?xí)浟藭r(shí)間。 但直接即時(shí)的反饋能夠適應(yīng)更快的迭代。

每周技術(shù)會(huì)議為工程師分享他們的設(shè)計(jì)或正做的項(xiàng)目創(chuàng)造了一個(gè)機(jī)會(huì),工程師們?yōu)樗麄兊墓ぷ鞲械阶院?,并學(xué)到了更多工作以外的內(nèi)容。內(nèi)部文檔記錄電子郵件服務(wù)的工作原理或如何讓排名改變搜索服務(wù),讓工程師學(xué)習(xí)和探索新的東西,也很好地補(bǔ)充了20%的時(shí)間。在Quora,我們通過(guò)內(nèi)部運(yùn)行Quora去問(wèn)產(chǎn)品和發(fā)展有關(guān)的問(wèn)題。

建設(shè)學(xué)習(xí)文化的一個(gè)辦法是注重指導(dǎo)和培訓(xùn),以確保每個(gè)人都掌握基本的算法,系統(tǒng)和產(chǎn)品成功所必需的技能。工程組織的成長(zhǎng),花在招聘(尤其是高校招聘)越多,需要投入到指導(dǎo)和培訓(xùn)的努力也要更多。一個(gè)導(dǎo)師每天花1個(gè)小時(shí)來(lái)指導(dǎo)新員工前4周工作似乎是很大負(fù)擔(dān),但投資是總時(shí)間不到一年的1%,這也是決定新員工是否成功的關(guān)鍵。

10、招最好的人

雇傭最好的人是以上列出的所有方法的基礎(chǔ)。如果你認(rèn)為自己是一個(gè)B級(jí)工程師很難有人尊重。如果你不信任他們開(kāi)發(fā)產(chǎn)品的能力,很難給別人自主權(quán)去開(kāi)發(fā)產(chǎn)品。如果沒(méi)有足夠的工程經(jīng)驗(yàn),很難識(shí)別正確的抽象去構(gòu)建系統(tǒng)。這很容易陷入構(gòu)建復(fù)雜結(jié)構(gòu)的陷阱,又沒(méi)有其他聰明人來(lái)挑戰(zhàn)你的想法和推動(dòng)你走向簡(jiǎn)單正確的道路。

在硅谷的史蒂夫·喬布斯曾說(shuō),"A等人聘請(qǐng)A等隊(duì)員。 B等人聘請(qǐng)C等人。"關(guān)注招聘和雇傭合適的人很難,但這對(duì)工程組織有效增長(zhǎng)很關(guān)鍵。黃易山,是前Facebook一個(gè)工程經(jīng)理和總監(jiān),認(rèn)為招聘必須是工程組織的首要任務(wù),不只是管理者,工程師也如此。 他也正確地指出“雇傭最好的”和“雇用你面試過(guò)的最佳人選”的區(qū)別。

在Ooyala的初期,我們?cè)诳蛻艄ぷ魃喜豢爸刎?fù),我們很想降低我們的招聘門檻,這樣我們可以聘請(qǐng)足夠的人來(lái)做大量工作。我很高興我們沒(méi)有,因?yàn)榈唾|(zhì)量的代碼和較弱的工程師團(tuán)隊(duì)積累技術(shù)債對(duì)團(tuán)隊(duì)和產(chǎn)品的傷害是很大的。

建立一個(gè)良好的工程文化無(wú)疑是一個(gè)大量的工作,但由此產(chǎn)生的工作環(huán)境是值得的。


雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。

如何打造工程師文化?這10件事情值得去做

分享:
相關(guān)文章

專欄作者

關(guān)注硅谷,關(guān)注高科技
當(dāng)月熱門文章
最新文章
請(qǐng)?zhí)顚懮暾?qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)