2017年4月21日 星期五

.在創業公司當好工程師,你得具備這 7 個特質

Startup vs. Big Company For An Engineer


infar 董飛

在创业公司当好工程师,你得具备这7个特质

不是每一個優秀的工程師都能在創業公司做得很好。過去六年里,我在三個創業公司(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談「成功的關鍵——磨礪「給出了偉大的定義:

對非常長遠的目標是需要激情和毅力。磨礪堅持你的未來,不僅是一天、一周、一個月,是多年來的努力,最後努力工作把未來成為現實。

如果你願意定期回顧過去,你就會明白你的弱點以及在哪些地方需要改進。隨著時間的推移和經驗增長,你會成為一個更好的創業公司工程師。在正確的道路上及早得到輔導和指導,也可以讓你走很長的路。

這些技能對更成熟的公司都有用;只是在創業公司更加重要,因為時間很有限。此外,缺乏這些技能並不一定意味著你是一個糟糕的工程師。它只是意味著你可能不太適合在創業公司。

但是,如果你確定是一個很好的創業公司工程師,不要讓這些阻止你。找出行動的計劃去改進這些技能。

                                                                                                                                                                                                                 


沒有留言:

張貼留言