《TO》導讀:作者 Edmond Lau 是一位矽谷工程師,曾於 Google 和 Quora 任職,現在在一家新創 Quip 內工作,出版《The Effective Engineer》一書。這篇文章他分享在新創公司裡的工程師必須要有的七項特質,以下為作者第一人稱敘述。
不是每一個優秀的工程師都能在創業公司做得很好。過去六年裡,我在三個創業公司(Ooyala,Quora,如今在 Quip)面試過很多有希望的候選人,他 們都有著在頂級的技術公司(比如 Google)5 年以上的工作經驗,但在我們的面試中卻表現得不好。這些人肯定不是差;事實上,他能勝任目前的工作。我們只是認為,他不會成為特別好的創業公司工程師。
在多年面試候選人,培訓和指導其他工程師工作的過程中,我發現某些特質使得工程師更容易在創業公司中取得成功。根本上,這些特質源於在創業公司工作不同於在成熟公司的幾個關鍵環節。
- 在創業公司:
1、 你有更多機會直接接觸產品,軟體系統,團隊和文化。
2、你的成功主要取決於團隊的表現而不是個人。在一個更大、更成熟的公司,可能你獲得晉升純粹基於你個人貢獻的力量;在一個創業公司,甚至可能都沒有一個職業階梯。
3、時間是非常關鍵的,一方面是因為創業公司往往還沒有達到盈利能力,因為他們與競爭對手相比的主要優勢是敏捷。在有限的時間意味著你必須迅速提升,並不能磨磨蹭蹭地工作或把太多時間浪費在低優先級需求上。
我曾經跟最有效率的創業公司的工程師工作,他們有能力和決策能力,有效把控局面。
- 他們表現出 7 個特質:
1、系統的調試技巧
工程時間的很大一部分實際上是花在調試和了解一個複雜的系統中去的。一位顧客報告一個緊迫的問題,你必須盡快將其修復;服務器的 CPU 負載高峰,你必須找出原因;數據被破壞,你必須找出罪魁禍首。良好的調試技巧讓你更快地完成工作。
有效的調試需要採取嚴謹、科學的心態面對問題:制定一個出錯地方的假設,然後找出最有效的方式或者最小化重複情景以檢驗這一假設。另一部分是熟練使用各種工具:一個性能分析器可以幫助識別瓶頸,調試器遍歷代碼執行,git bisect 縮小可能的地方,UNIX 命令行去分析發生了什麼。
調試的範圍更廣泛的應用不僅僅是技術方面。當產品增長已趨於穩定,你怎麼制定和測試假設有關用戶行為和調試這些趨勢?團隊沒達到他們的項目目標,你怎麼調試其根本原因?是項目估算能力太差?團隊溝通不夠?太多的上下文切換?還是其他什麼?招聘沒招到你想要的工程員工,你怎麼知道問題是否在源頭系統中,你的面試,發出的 Offer,等等?(提示:先從數據中看)。
2、勇敢跳進你不知道是什麼的地方
作為創業工程師,你經常需要跳入大又不熟悉的代碼庫。可能需要研究一些開源工具,因為該工具不按你的設想工作。或者你可能需要了解另外同事的代碼,因為他沒有修改的時間。快速瀏覽大量的代碼庫,並定位相關部分的能力變得至關重要。大部分的這種能力來自於閱讀大量的代碼的經驗。另一部分來自於熟悉的工具來搜索代碼庫,跳轉到相關的部分,並查找相關的提交歷史版本控制,所有這些快捷鍵可以減少了解不熟悉代碼的時間。這種勇敢同樣適用於更成熟的公司,但你通常只專注於代碼庫的一部分並很好了解那一塊。
你跳水到未知領域也不見得是代碼。在創業公司,處理客戶的支持、與銷售人員討論客戶要求的可行性、培養新的工程師等其他不熟悉的事情都是有可能的。這種積極心態能幫助做好工作。
3、對決策的務實態度
像代碼審查和單元測試維護是良好的軟體工程實踐,這上面堅持己見在大公司很重要,它可以幫助組織擴大規模。 但在創業公司,做什麼使團隊更快地完成工作更務實。實用主義意味著知道什麼時候打重要的戰役,有時即使你不同意,也請接受決定,因為它讓團隊作為一個整體能夠取得進展。
我已經看到了很多爭吵:在編碼風格上、在源代碼行是否應該是 80,100 或 120 個字符以及是否花括號應該開始一個新行。但也有不少更難,更重要的決定花費你的時間和精力。
指導啟發式評估的最終評價標準應是:「什麼樣的行動最終將增加團隊成功的概率?」許多因素可能會影響這個問題:產品選擇,架構的權衡,團隊文化,人、等等。不過也可能不會影響。最簡單的做法是,限制討論時間,對決定做承諾,並繼續往前走。
4、搭建工具的心態
工具讓你爭取到的最重要的資源就是你的時間。高效的工程師建造了大量的工具,這在創業公司尤為重要,因為你的時間更有限,需要完成的事情更多。大型機構可 能有專門的工具團隊來幫助工程團隊更有效做事。在創業公司,你搭建工具能力越強,更多的手動工作可以自動化完成。如果這些新工具被其他團隊成員採用,那麼這是另一個生產力係數的提升。
5、一個強大的多面手
特別是在創業早期階段,大量面臨的問題不需要專門的知識,而是更廣泛的技能。即使它只是一個最低限度,你會發現工作熟悉的技能越多,你的執行路徑瓶頸越少。一個前端 Web 工程師擁有一些基本的服務器技術將能更有效實現原型系統,而不會從繁忙的服務器工程師那裡尋找幫助。
後端工程師會基本的 HTML,CSS 和 JavaScript 技能可以搭建一個 Web 界面讓更多的團隊成員可以使用它,而不是阻塞在一個網頁設計師那裡。一個用戶增長工程師熟練使用數據分析工具可以分析運行試驗,而不會被一個數據分析員所阻礙。
也有例外,當你在一個特別的技術空間工作,專家可能是能最大限度發揮作用的。如數據庫的啟動調試,這裡需要深厚的專業知識。並且創業公司越後期,越有可能去填補這些專業領域,那麼你就要找到特定角色來幫助完成。
6、渴望成為一名參與球員,而不是一個受害者
Fred Kofman 在他的書《有意識的企業》中描述了兩種我們可以對任何問題採取的態度。我們既可以是受害者——將任何問題(項目的最後期限錯失,產品推出搞砸,或與隊友衝突)歸於外部原因;或者,我們可以當參與球員——確定我們的能力範圍後集中精力去解決一些問題。受害者心態可以讓我們在短期感覺好些,但參與者心態是最終有成效取得進展的唯一途徑。
在創業公司工作可能很緊張。隨著高度緊張,很容易陷入指責的遊戲,躲避責任,而不是在你能力範圍能去承擔責任。不幸的是,這條道路只會導致失望和不滿。
7、磨礪,加上學習決心和反思
對以上特質的一個重要發現是,如果你有足夠的動機,那都是可學習的技能。長期學習這些技能的動力來自「磨礪」這種品質。安杰拉·李,在她的 TED 談「成功的關鍵——磨礪「給出了偉大的定義:
對非常長遠的目標是需要激情和毅力。磨礪堅持你的未來,不僅是一天、一周、一個月,是多年來的努力,最後努力工作把未來成為現實。
如果你願意定期回顧過去,你就會明白你的弱點以及在哪些地方需要改進。隨著時間的推移和經驗增長,你會成為一個更好的創業公司工程師。在正確的道路上及早得到輔導和指導也可以讓你走很長的路。
這些技能對更成熟的公司都有用;只是在創業公司更加重要,因為時間很有限。此外,缺乏這些技能並不一定意味著你是一個糟糕的工程師。它只是意味著你可能不太適合在創業公司。但是,如果你確定是一個很好的創業公司工程師,不要讓這些阻止你。找出行動的計劃去改進這些技能。
(本文獲雷鋒網授權刊載,原標在創業公司當好工程師,你得具備這 7 個特質,圖片來源:marissa CC Licensed,未經授權請勿轉載)
- 延伸閱讀
【台大洪士灝】寫程式還不夠!成為「傑出」軟體工程師需要六項能力
工程師寫 Code 的聰明省力法:Google 一次我可以寫 10 行程式碼
【專訪碎碎念團隊工程師】1 個月衝破 40 萬下載量,這份練等作業太狂!