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

2020-12-25 中關村在線

雷鋒網按:本文作者Edmond Lau,公號「董老師在矽谷」翻譯首發。

我作為面試官最喜歡問工程師的問題是:在他們以前的公司,他們喜歡和不喜歡的關於工程師文化的事是什麼?我採訪了500多人——其中許多來自頂尖高科技公司,如Facebook,谷歌,亞馬遜,Palantir,和Dropbox,隨著時間的推移,這種面試問題也告訴我:優秀工程師喜歡的和儘量避免的地方。根據採訪答覆和我個人經驗,從過去七年跨越谷歌,Ooyala和Quora的工作,我總結出為建立一個良好的工程文化,一個團隊可以做的十件事情

1、優化迭代速度

快速迭代有助於提高工作積極性和興奮度。一些工程師在面試時說到他們離開公司的原因,其中最常見的也最令人沮喪的是基礎設施和繁冗流程阻礙他們部署代碼或者上線功能

在組織上,快速迭代讓工程師和設計師更靈活自主地作日常決策。我在谷歌,任何用戶可見的搜索結果改變,即使是低流量的實驗,也需要瑪麗莎·梅耶在每周UI審查批准。雖然這允許谷歌保護它的搜索品牌,但它明顯阻礙了創新。優化迭代速度也意味著,按照明確定義的流程推出產品,避免投入大量時間後意外發生。

優化迭代速度意味著建立持續部署以快速驗證,提高測試覆蓋率,減少構建和網站宕機次數,快速單元測試,並鼓勵大家來運行,快速增量編譯和重新加載,以縮短開發時間。持續部署,提交到線上特別重要。比如在Quora它提供的迭代速度至少在小工程隊利大於弊(線上出錯的風險)。人們更興奮地看到功能和修復Bug是因為很快看到了實時流量的變化。這要比超過一周或成批的代碼提交,要更容易推斷和精確定位錯誤源的位置。

團隊智慧,快速迭代的速度意味著有強有力的領導者,幫助協調和推動團隊的工作。在決定關鍵點上負責人需要有效地作出決定,並承諾他們的選擇。借用比爾·沃爾什(領導49人隊3次進超級碗)的一句話:強有力的領導者需要「承諾,引爆,恢復」,這意味著承諾攻擊計劃,執行它,然後看反應結果。優柔寡斷的團隊只會導致個人努力白費。

2、儘量自動化

在技術講座「規模化Instagram」上,Instagram的聯合創始人邁克·克裡格引「優化最少的操作負擔」作為一個重要的教訓,領導他的13人團隊將用戶增長到幾千萬。 產品的增長意味每個工程師的操作負擔加重,如用戶跟工程師或者特定功能跟工程師的比率。 像Facebook號稱每個工程師支持超過100萬的用戶比例指標。

自動化解決方案和讓腳本去重複執行任務很重要,因為它們解放工程團隊,讓他們為實際產品工作。確保在流量高峰期,如果有服務失敗並自動重啟的情況下,能找到替代者是管理大而複雜產品的明智方案。在短期內可以對應用做快速修復,而長期還是要依賴自動化測試,這需要權衡。

Etsy的座右銘是「衡量所有,衡量一切」。支持像開源監控和製圖工具graphite和statsd突出自動化 -——即自動化必須由數據和監控驅動。如果沒有監控和日誌你怎麼知道什麼事情錯了,為什麼錯。自動化是困難的。一個後續的座右銘是「衡量所有,衡量一切,並儘可能自動化。

3、建立合理的軟體抽象

我的麻省理工學院教授和本科生研究顧問丹尼爾·傑克遜說的軟體抽象的重要性:

"選擇正確的方式,程序化自然而然地設計;模塊化就是有小而簡單的界面; 新功能在不影響全局的情況下產生。要是搞錯的話,程序將是一系列的討厭的坑:接口很笨拙因為他們無法適應一些意料之外的交互,即使是最簡單的改動也將很難維護。"

在谷歌,什麼讓數千名工程師建立可擴展的系統——因為他們有非常聰明的工程師像傑夫·迪恩和桑傑·格瑪沃特,創建了簡單但豐富的抽象,如MapReduce,SSTable,Protocol Buffer等。什麼讓Facebook工程這麼支持大規模——是因為專注於核心,同樣喜歡抽象和簡單,Thrift, Scribe, Hive。是什麼讓設計人員能夠在Quora有效構建產品,Webnode,Livenode也是基於同樣的理解。

保持核心抽象的簡單和減少自定義解決方案並增加團隊熟悉度和對專業知識的抽象。日益普及的系統像Memcached,Redis,MongoDB等都是降低建立定製存儲和緩存系統的必要性。團隊重點轉移到少數核心抽象,而不是分裂在很多臨時解決方案,讓公共庫更穩健,監控更智能,性能更易理解,測試更全面。所有這一切都有助於搭建一個簡單的系統,降低操作負擔。

4、注重代碼審查,編寫高代碼質量

維持高品質的代碼庫增加了整個工程團隊的工作效率。整齊的代碼更容易便捷發展和維護,更適應變化,不容易引入錯誤。健康的代碼審查過程使之成為可能。

建立及時代碼審查流程,不管是預提交或提交後,代碼審查有很多必要性。首先,知道有人會檢查你的代碼,提交寫得不好的代碼可能會辜負你的隊友。那些難以維護,或未經測試的代碼是一種壓力。第二,代碼審查也提供了評審和相互學習編寫更好代碼的機會。

代碼審查更容易接觸到其他工程團隊成員,評論也有很多促進作用:

a)增進一段時間內審查代碼的責任感;

b)允許團隊成員——特別新手——觀摩別人的好代碼;

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

有種說法,靈活的團隊沒多少時間花費在代碼審查而忽視了技術債務,可以很容易地從寫得不好的代碼積累。 Ooyala公司,在創業早期就為了完成儘可能多的功能而忽略代碼審查;其結果是,雖然最初的產品更迅速地擁有了市場,但代碼修改變得很痛苦,我們花了一年多時間僅僅是改寫脆弱的代碼,以償還技術債務。

谷歌預先對所有的代碼進行審查,但規模較小的團隊並不需要那麼全面和嚴格,因為不是所有的代碼都需要使用相同的標準審查。 Ooyala公司後來採取了措施——通過電子郵件通知核心處危險的變化。在Quora,我們用Phabricator對所有的代碼進行審查,大多後提交,並採用了不同的標準模型,比如控制器代碼和視圖代碼; 對於敏感的代碼或新工程師的代碼,我們要麼做預提交的評論或試圖在幾個小時內去被提交的代碼中查看它們。

5、保持一個相互尊重的工作環境

同事之間的尊重構成開放交流的基礎。靠譜的想法往往通過大家的辯論獲得,這種挑戰也是令人感覺很舒服的方式。人們不爽的是重要反饋沒有及時回應

1948年,亞歷克斯·奧斯本概述了過去幾十年中在工作環境中流行的方法:參與者走到一起,拋開批評和負面的反饋,共同凝聚在一起不用擔心被評判,頭腦風暴會議。最近的心理學研究已經開始推翻奧斯本的做法,表明在頭腦風暴會議中,鼓勵辯論實際上避免了群體思維並產生了更有效的思路。鑑於這一研究,一個相互尊重的環境變得更加重要,攻擊僅僅是觀點上的而不是針對個人。

工程往往跨越廣泛的領域(系統,機器學習,產品等),而不是每個人在每個領域都有相同的專業知識。其實一個強大的團隊應該具備:在某些領域都有能幹的牛人,即使他們最終會被替代。這有時很麻煩,讓一個系統工程師來評估產品工程師的能力,但在一個健康的工程師文化中,尊重這些差異很重要,而不是完全根據自己的優勢來判斷。

6、建立共享代碼所有權

雖然有些人很自然地就精通代碼庫或基礎設施的各個部分,但沒有一個人可以覺得他們擁有其中任何一件或者是某一件的唯一維護者。雖然有人能在一些領域成為專家,在短期內有成效,但這種做法最終傷害長期利益。

在組織上,共享代碼所有權提供了三個好處。

首先,保持因子8大於1可以減輕壓力和降低團隊維護者離開的風險。這也使人很難在休息時間無憂。我清楚記得,當我在夏威夷火山上徒步旅行度假時,得到報警,因為我是公司的日誌處理器的唯一維護者。

其次,共享所有權讓工程師不限制在特定區域,以促進新的見解。它讓工程師們從某些項目上解放出來,並鼓勵他在多樣的項目上工作,這有助於保持工作的趣味性,並提升員工學習的積極性。從長遠來看,它降低了組織風險——一些工程師一旦感到停滯將會決定離開。

第三,共享所有權還設置了多個團隊成員聚焦在高優先級的問題上(敏捷開發的一種),為更迅速地完成戰略目標奠定了基礎。而孤立的所有權,責任通常落在一兩個人肩上。

很多工程組織犯的錯誤是為時過早地將整個團隊分成子團隊。子團隊會形成責任的阻礙,並很難去打破所有權的牆,因為個人可能會被其子團隊的目標進行評估。 Ooyala有很多小團隊,我很珍惜與一些其他團隊的工作機會;他們使用敏捷開發,重心放在共享代碼所有權,使得工作幸福感和生產力更佳。 在Quora的初期,我喜歡的一個方面是這裡更強調項目而不是團隊,讓我有機會合作很多不同項目:從用戶增長,機器學習,工具,推薦,分析,網站的速度,和垃圾檢測都有。

7、投資自動化測試

單元測試和集成測試覆蓋率是管理一個大的代碼庫與一大群人或產品的唯一可擴展的方式。自動化測試提供了對提高代碼質量的大規模重構的信心和有意義的保護。缺乏嚴格的自動化測試,需要手動測試無論是對工程團隊還是外包測試團隊,都是令人害怕的,很容易形成恐懼改善代碼的文化,因為它有可能破壞原有代碼秩序。

在實踐中,自動化測試是對持續部署工作團隊成長的要求。代碼庫規模隨著時間的推移增長,但熟悉的代碼庫的數量會隨團隊成員新人加入而減少。測試和驗證最容易被原代碼作者完成,因為在他們腦子裡還是清晰的,而不是稍後幾個月或幾年才嘗試修改代碼的人。鼓勵單元測試是讓作者為自己的工作負責。

8、分配20%的時間

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

Ooyala公司沒有正式的20%的時間,但我花了一些,寫了一個命令行構建工具Flex和ActionScript,加快了團隊構建時間。正當Adobe的Flex Builder工具降級之時我完成了它,在工程團隊超過兩倍大小時該工具仍然在使用。 Atlassian公司在嘗試一年後通過20%的時間。Facebook和Ooyala公司後來又增加了一個20%時間:是周期性的黑客比賽——規則是,你可以做任何東西,除了你的正常項目的工作。

自上而下對產品進行規劃,對公司的總體方向是重要的,不能指望從工程師中冒出很多的想法。只有工程師對他們20%的時間和專注的項目有負責任的態度,這些項目有很大的向前發展的可能。沒有官方的20%的時間,它仍然是可能的,但是對工程師和設計師來說有可能去嘗試瘋狂的想法——也基本上都找周末或假期做。

9、建立學習和持續改進的文化

持續學習和得到充分的挑戰是必須的,因為心理學教授米哈裡·米哈伊稱所謂的「心流」表明,一個人完全集中在他們做的事情上,甚至會忘記了時間。 但直接即時的反饋能夠適應更快的迭代。

每周技術會議為工程師分享他們的設計或正做的項目創造了一個機會,工程師們為他們的工作感到自豪,並學到了更多工作以外的內容。內部文檔記錄電子郵件服務的工作原理或如何讓排名改變搜索服務,讓工程師學習和探索新的東西,也很好地補充了20%的時間。在Quora,我們通過內部運行Quora去問產品和發展有關的問題。

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

10、招最好的人

僱傭最好的人是以上列出的所有方法的基礎。如果你認為自己是一個B級工程師很難有人尊重。如果你不信任他們開發產品的能力,很難給別人自主權去開發產品。如果沒有足夠的工程經驗,很難識別正確的抽象去構建系統。這很容易陷入構建複雜結構的陷阱,又沒有其他聰明人來挑戰你的想法和推動你走向簡單正確的道路。

在矽谷的史蒂夫·賈伯斯曾說,"A等人聘請A等隊員。 B等人聘請C等人。"關注招聘和僱傭合適的人很難,但這對工程組織有效增長很關鍵。黃易山,是前Facebook一個工程經理和總監,認為招聘必須是工程組織的首要任務,不只是管理者,工程師也如此。 他也正確地指出「僱傭最好的」和「僱用你面試過的最佳人選」的區別。

在Ooyala的初期,我們在客戶工作上不堪重負,我們很想降低我們的招聘門檻,這樣我們可以聘請足夠的人來做大量工作。我很高興我們沒有,因為低質量的代碼和較弱的工程師團隊積累技術債對團隊和產品的傷害是很大的。

建立一個良好的工程文化無疑是一個大量的工作,但由此產生的工作環境是值得的。


news.zol.com.cn true http://news.zol.com.cn/583/5837489.html report 9884 雷鋒網按:本文作者Edmond Lau,公號「董老師在矽谷」翻譯首發。我作為面試官最喜歡問工程師的問題是:在他們以前的公司,他們喜歡和不喜歡的關於工程師文化的事是什麼?我採訪了500多人——其中許多來自頂尖高科技公司,如Facebook,谷歌,亞馬遜,Palantir,和Dropbox...

相關焦點

  • 根本不值得你去做的20件事情
    他列舉的不值得做的事情包括人際關係、學習、工作及生活的方方面面,裡面有不少值得吸取教訓的地方。原文發表在medium上,標題是:20 Things In Life That Are Just Not Worth It這篇文章是因為某天晚上我無意中看了Quora上面的提問想到的。我還是該平臺的新手,覺得應該去回答幾個問題去感受一下這個平臺。
  • 我是如何從中芯國際的數據建模工程師,轉行去做算法工程師的?
    >德國亥姆霍茲聯合研究中心 聯合培養博士博士生國家獎學金KLA-Tencor冠名獎學金復旦大學第七屆「學術之星」(全校理工科每年僅10個)2016年上海市優秀畢業生……這位師兄除了各種獎項拿到手軟還手握30+篇發表文章的優秀畢業生級別工作後更是輕鬆轉身大熱的算法工程師
  • 想要走進一個人的內心,就去做這三件事情
    人在很多情況下,並不是不知道自己應該如何做,他們在向一個人訴說自己心事的時候,想要的也往往不是建議,而是認同,理解。 比如,當一個人因為他經歷過某些事情而感到非常難過時,你就應該認同他的難過,而不是告訴他難過只會讓他不快樂,他應該儘快振作起來。 你說他不知道如何做嗎?
  • 2016值得去做的10件小事
    回想2016年,有哪些事情是值得擼友們去做的呢?下面我將結合自己的真實經歷來告訴大家,各位擼友們且擼且珍惜。上次寫這種類型的文章是在2015年12月21日,當時也是看到一篇名為《再不瘋狂就老了!LOL玩家年末應該做的10件事》的文章。之後有感而發寫的,今年我決定在寫一次《今年應該做的10件小事》。其中有完成的也有未完成的,沒能在今年完成的事情希望明年可以如願以償做到。
  • 如何和領導身邊的人打交道?曾國藩:這兩件事情,千萬不要去做
    閱讀提示:本專欄是一個系列,講述曾國藩如何運用馭人術,一步步走上權力巔峰的全過程。沒有高深的理論,只有曾國藩曾經使用過的方法。建議從第一章看起,以全面了解曾國藩的馭人術。如何駕馭領導身邊的人?這是很多人一直在研究的問題。可很多人研究了一輩子,也未能找到玄機。曾國藩33歲這一年,才真正和道光皇帝身邊的人打交道,而且,他總結出,和領導身邊的人打交道,無論對方的職位有多低,也不能看不起對方,尤其是這兩件事情,千萬不要去做,否則,就很有可能讓你前面的一切努力歸零。
  • 在職場中這10件事情一定不要做,快來看看吧!
    現在這個社會我們找一個工作也不是那麼容易,我在職場時,這10件事情一定不要做,他將影響你職場生涯發展的不良態度,要引以為戒!1、「我覺得這樣就差不多了。」一旦你驕傲自滿,生活進步就會戛然而止。不論你對某件事多麼擅長,總有可以不斷提高的地方。
  • 去東京旅行,15件值得去嘗試體驗的事情!
    這裡列舉了15件去東京旅行最值得去嘗試的事1.觀看世界上最繁忙的人行橫道著名的澀谷十字路口是親眼目睹東京市最繁忙的人行橫道的終極場所。坐在附近的星巴克(Starbucks)樓上,欣賞人行橫道的最佳風景,呵呵,準備開始認真觀察人們吧!
  • 美國行:去洛杉磯旅遊,這裡有10件事值得去做,一起看看吧!
    1.去迪斯尼樂園,許多人發現它比佛羅裡達州的迪斯尼樂園更有魅力,不那麼令人難以抗拒。洛杉磯的一個額外體驗是,迪士尼樂園現在與迪士尼的加州冒險相結合,展示了更多最新的迪士尼人物和以好萊塢為導向的景點。3.狼吞虎咽吃漢堡,任何一個洛杉磯的快餐店都值得去光臨,吃上漢堡和薯條,嘗嘗烤洋蔥和特製的沙司,真的很美味。4.在太平洋海岸公路自駕遊,沒有什麼比沿著風景優美的太平洋海岸公路自駕遊更能體驗洛杉磯的了。在觀賞美景和藍綠色的海水之後,在一家海鮮店停下來,吃一些海鮮,然後看看美麗的海灘。
  • 做「直升機」家長還是做「腳手架」父母,這件事情值得思考
    孩子們一起參加了一個歷史文化景點的研學活動,當天參加的人特別多,共有21個孩子,大多數是8、9歲3年級以上的孩子,有四個和我們一樣大概6、7歲的一年級孩子。孩子們大多很活潑也非常喜歡往老師的跟前湊,都希望自己是那個最快最大聲回答老師提問的人。
  • 華為系10年資深HR呂菡:手把手教你如何打造自己的團隊建設
    演講中,她還總結了創業需要具備的六大要素等問題,供大家參考去打造自己的團隊建設。文章轉自微信公眾號:筆記俠。呂菡 | 10年華為系資深HR,3年新媒體社群運營官。曾就職於H3C、數夢工場等華為系、阿里系公司,經歷過IT通信、視頻監控、O2O、雲計算大數據等時代最前沿的行業。
  • 文化故事|我是工程師:被夢想叫醒,腳踏實地
    他說:「這是甲方工程師應該有的調性配置,戴上鋼盔你們就是這條街最靚的仔。」葉瀚總要求全區域要做好基礎產品力,營造工程師文化!湘西區域倡導的工程師文化包含六大特質:客戶意識、產品意識、責任心、吃苦精神、精細、「處女座」精神。
  • 不論你信不信,這3件事情有損陰德,最好不要去做
    可以說陰德陽善都是行善積德的好事,也是人生修行中的大事,而積陰德的事情更是大福報,是功德無量的超度。那何為陰德呢?事實上就是如雷鋒同志一般的做好事不留名的行為,如郭明義同志默默奉獻助力他人的善舉。默默的在背後想著他人,顧著他人,不計回報的幫助他人,這便是陰德。我們常說善有善報,惡有惡報,常做好事便一定會有福報會有好運。
  • 小事情,引發大情緒:想了解孩子的心思,這件事情值得做
    媽媽使盡渾身解數想讓航航停止哭泣,她不知道,此時的航航只需要不受幹擾地痛痛快快地哭一頓,直到不快的情緒消失,這是孩子自然而然地會啟動的康復過程。01 小事情,壓垮了情緒的最後一根稻草航航因為蘋果的事情哭,其實背後的真正原因是這樣的。
  • 女生第一次去男方家裡,先別急著幫忙,這幾件事情很重要!
    女生第一次去男方家裡,先別急著幫忙,這幾件事情很重要!1.去男方家別急著洗碗做飯很多女人一到男方家,就馬上進廚房,張羅著飯菜了。女人心裡想的肯定是如何在未來的公公婆婆面前樹立一個賢惠的形象,首先會做一桌好吃的飯菜肯定是加分項,不僅如此,吃完飯,女人甚至把洗碗都包了。
  • 經期這10件事情一定不要做
    健康的護理這可是大家都渴望的。女人在經期身體抵抗力會明顯下降,有的人一到經期就會感冒發燒等,也是由於這個原因。所以在經期一定要注意保養。更要注意經期衛生護理,不然很容易患上婦科疾病。下面來看看經期有哪些事情是不能做的。一般女生經期是3天到7天左右,這期間從子宮通過陰道排出一定的血液,這些血液是很乾淨的。
  • 家庭需要儀式感,這20件事值得父母陪孩子去做
    家庭需要儀式感,這20件小事值得父母陪孩子去做 說到儀式感,大部分人首先想到的可能是愛情,那麼儀式感和孩子有什麼關係呢? 也許一件充滿儀式感的小事,會讓家裡的幸福指數倍增,會讓孩子擁有更高的情商,讓孩子內心充滿愛,下面的這20件小事,家長不妨陪孩子體驗一下。 1在保證安全的情況下,請允許孩子下雨時踩水坑玩泥巴,允許孩子扒沙土,哪怕他的衣服會很髒,髒了大不了再洗。
  • 看IT工程師如何做農業?搞網店、做眾籌、玩電商
    作者:老貓最有前景的IT職業:IT工程師,北上廣初級工程師的年薪20萬以上,骨灰級IT工程師年薪百萬。但,有些IT工程師竟然放棄高薪、白領的工作全身心做農業。竟然,一篇文章賣出去二十萬元的香菇。丁志輝覺得農產品電商是一個機會,於是辭職回鄉創業。畢竟受網際網路文化薰陶,丁志輝藉助新媒體方式開啟賣香菇的創業生涯,並在網站註冊網店「香菇小丁」。
  • 如何去面試一個測試工程師崗位?
    如何去面試一個測試工程師崗位???全手敲,少了些美觀,多了些乾貨,面試必備葵花寶典,覺得還不錯的,多多支持哦!做測試培訓不少年頭了,積累了一些面試的經驗和技巧,接下來幾期打算重點說一下如何去面試軟體測試崗位以及面試所遇到的問題,希望能夠幫到大家,也祝大家找到滿意的軟體測試工作。01 去外包還是直招的公司?
  • 獲得財務自由要做的10件事情,你做對了幾件呢?(下篇)
    昨天給大家分享了獲得財務自由需要做的六件事情,接下來繼續來分享另外的4件事。7.不要急躁古人云:「欲速則不達」。試著改變自己的思維方式,去相信自己可以成為一個富人,可以積攢到很多的財富。只要足夠的努力和勤奮,一定能夠實現財務自由。還記得吸引力法則嗎?你越相信什麼就越能吸引到什麼,對於財富也是如此。
  • 女人,如何提升與男人的「親密感」,快去做這3件事
    如果你也有這樣的困擾,快去做下面這3件事。如果這3件事情你都做了,還是感受不到「親密感」,再考慮分手也不遲。第一件事:對男人保持一定的神秘感。男人往往覺得有神秘感的女人更吸引人。第二件事:表現出對男人的興趣和好奇。男人都是喜歡被關注的。所以女人要投其所好,去關注和了解男人的一切。