高生產力的杰出軟件工程師都具備的五種能力

wkq72376 8年前發布 | 11K 次閱讀 程序員

 

曾任職于Google和Quora等公司、現任Quip軟件工程師的Edmond Lau,于 《The Effective Engineer》 一書中訪問任職于非死book、Instagram和Google等知名網路公司的資深軟件工程師,歸納出他們眼中高生產力的杰出軟件工程師都具備的五種能力。

一、不害怕探索陌生程序語言

接觸新專案或是轉換工作跑道時,都有可能需要學習全然陌生的程序語言,許多人對此感到害怕,甚至未嘗試就先放棄。其中,跳脫舒適圈的恐懼往往多于學習程序,會擔心是否無法重現過去工作的好表現,甚至因此懷疑自身能力。

不論是多厲害的工程師,一定都有起點,就像打造Microsoft Windows基礎的微軟資深工程師Dave Cutler為文組出身,沒受過正式電腦科學教育,比起同輩花更多時間在錯誤中學習。在這之中,最重要的兩個關鍵為具備「成長心態」(growth-mindset)而非「固守心態」(fixed-mindset),以及「樂于學習」(optimize for learning)的態度。

學習陌生程序語言這項關鍵能力會越練越上手,并讓你在學習過程中成為更好的程序設計師。

二、精通Debug

「為什麼程序跑出來和我預期的不一樣?」是許多工程師會遇到的問題。Debug能力往往是影響工程師是否能順利完成專案的關鍵因素,卻被大部分人低估。Debug的系統性思考如下:

  1. 先假設造成bug的可能原因。
  2. 若假設為真,界定此假設可能導致的結果。
  3. 試著檢視是否有和這些結果衝突的現象。
  4. 若有衝突表示假設錯誤,要重複上述思考過程。

由此可知,想加快Debug速度,要提升「提出假設」和「檢視假設」的能力。假設能力可隨著Debug經驗的累積而提升,檢視能力則需加強善用檢測工具的技能。在此過程,必須先假設所有東西都是可檢視的,并找出可用來檢測或加快檢測速度的工具或機制,千萬不要只用自己熟悉的工具。

三、開發節省時間的工具

減少時間做那些電腦就可做的工作,例如開發節省時間的工具和使工作流程自動化。

曾負責非死book軟件基礎建設團隊的軟件工程師Bobby Johnson,帶領該團隊從6人成長至超過1百人。他觀察到,團隊中表現出色的人多數寫了許多工具,這些看似和績效無直接相關的工具開發時間可能佔三分之一的工作時間,卻因此大大提升工作效率,其中包含用來部署程序、監測系統,以及其他可節省時間的工具。

四、優化重複性工作的速度

軟件工程師每天可能要搜尋、瀏覽函數定義很多次,善用鍵盤快捷鍵可省下可觀的時間。例如,每次搜尋需花12秒,類似的步驟每天要重複20次,若用快捷鍵可將搜尋時間縮短到2秒,一年下來即省了40個小時。其他狀況如每次Debug都需要在不同裝置測試,除了要分別打開app,還要設定測試情境,這時候就可以思考如何加快這類重複性工作的速度。

五、發展系統性思考模式

寫完程序碼、讓程序可運作僅是冰山一角,要產出真正有價值的程序,必須從程序本身提升到整個系統來思考。

  • 你的程序和其他程序庫以及其他人寫的功能是否相容?
  • 程序是否測試完成,并確保其他成員可執行你寫的這些功能?
  • 部署你的程序需要改變哪些生產環境?
  • 新程序對其他正在運作的系統是否有負面影響?
  • 客戶和使用者的新程序使用情況是否如預期?
  • 新程序是否達到公司期待的效果?

從巨觀的角度思考問題,可讓你更懂得如何調配時間和精力以讓程序達到最佳效果。

 

來自: http://www.techug.com/5-ablitity-of-greate-enginner

 本文由用戶 wkq72376 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!