不是每一個優秀的工程師能在創業公司做好的。我已經在三個創業公司(Ooyala,Quora,現在Quip)面試過去六年中最有希望的候選人,他們有着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談“成功的關鍵,磨礪“給出了一個偉大的定義:
對非常長遠的目標是需要激情和毅力。磨礪堅持你的未來,不是一天,不僅是一週,一個月,是多年來的努力,最後努力工作把未來成爲現實。
如果你願意定期回顧過去,你就會明白你的弱點以及在哪需要改進地方。隨着時間的推移和經驗增長,你會成爲一個更好的創業公司工程師。及早在正確的道路上輔導和指導可以讓你走很長的路。
這些技能對更成熟的公司都有用;只是在創業公司更加重要,因爲時間很有限。此外,缺乏這些技能並不一定意味着你是一個糟糕的工程師。它只是意味着你可能不太適合在創業公司。但是,如果你確定是一個很好創業公司工程師,不要讓這種阻止你。找出行動的計劃去改進這些技能。