跳到主要內容

[職場]會寫程式還不夠,傑出軟體工程師都有的5種能力。


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

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

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

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

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

  二、精通Debug

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

  Debug的系統性思考如下:
  ① 先假設造成bug的可能原因。
  ② 若假設為真,界定此假設可能導致的結果。
  ③ 試著檢視是否有和這些結果衝突的現象。
  ④ 若有衝突表示假設錯誤,要重複上述思考過程。
  
  由此可知,想加快Debug速度,要提升「提出假設」和「檢視假設」的能力。假設能力可隨著Debug經驗的累積而提升,檢視能力則需加強善用檢測工具的技能。在此過程,必須先假設所有東西都是可檢視的,並找出可用來檢測或加快檢測速度的工具或機制,千萬不要只用自己熟悉的工具。

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

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

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

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

  ■ 你的程式和其他程式庫以及其他人寫的功能是否相容?
  ■ 程式是否測試完成,並確保其他成員可執行你寫的這些功能?
  ■ 部署你的程式需要改變哪些生產環境?
  ■ 新程式對其他正在運作的系統是否有負面影響?
  ■ 客戶和使用者的新程式使用情況是否如預期?
  ■ 新程式是否達到公司期待的效果?
  ■ 從巨觀的角度思考問題,可讓你更懂得如何調配時間和精力以讓程式達到最佳效果。

這個網誌中的熱門文章

[娛樂]玩了多年的撲克牌,其實背後是結合工程、歷史、設計的大學問!

  全世界各地的人們都知道撲克牌,也都有和撲克牌打過交道,幾乎每個地方都宣稱撲克牌是自己的發明成果。中國人認為撲克牌最早起源於十二、十三世紀南宋時期傳出的中國的葉子戲(按照四季分為四種類別)。法國人則認為撲克牌是由塔羅牌演變而成,而英國人則表示自己是在所有經過認證的記錄資料中最早提到紙牌遊戲的國家。   現在,大家可能都知道怎樣玩「二十一點」或者是橋牌,但很少有人會靜下心來想一下,一副撲克牌其實是工程學、設計和歷史多方面融合而成的一個奇蹟。撲克牌不僅是一種休閒娛樂時的消遣工具,也是高額賭博和魔術技巧的練習和展示工具,不僅是一種數學概率模型,甚至有時候也會被當作貨幣或者是機密訊息的傳播媒介。   在這個過程中,撲克牌不同起源的獨特之處也展現了出來。撲克牌的名稱、顏色、標誌和設計根據不同的出處以及玩家不同的想法而發生變化。這一張張的圖形卡片不僅僅是玩具,或者是工具,他們更是展現不同習俗的一種文化印記:   有關撲克牌的誕生地一直眾說紛紜,外界也沒有達成一個確定的共識,但就像火藥、茶和瓷器這些發明一樣,幾乎可以肯定的是撲克牌也是起源於東方。國際撲克牌協會(IPCS)主席 Gejus Van Diggele 也表示:「學者們和歷史學家對撲克牌的確切起源存在分歧,但他們普遍認為撲克牌是由東方向西方進行擴散傳播的。」   中國唐朝時期有史料提到了一種紙牌遊戲,雖然這種遊戲更像是現在的多米諾骨牌,但專家認為這是有關紙牌最早的書面記載材料。歐洲 14 世紀末期的一些參考文獻曾提到一種「撒拉遜人(阿拉伯人的古稱)玩的遊戲」突然傳入歐洲,這表明紙牌不是來源於中國,而是來自阿拉伯半島。   此外,還有一種說法是,紙牌最早是由游牧民族從印度帶來的一種能夠預測命運的卡片,為紙牌的起源打上了更為久遠的一個印記。但無論是哪一種起源,應該都是有一定的商業契機促進了紙牌在遙遠的東方與歐洲之間的傳播,與此同時印刷技術的發展也加速了紙牌跨國界的生產和傳播。   在中世紀的歐洲,紙牌遊戲多是與喝酒、賭博還有其他的一些陋習聯繫在一起。由於紙牌遊戲傳播的廣泛性,以及它給當地所帶來的破壞性,當局決定禁止紙牌遊戲。歷史學家 Michael Dummett 在他的《塔羅牌遊戲》一書中提到了巴黎的一項法令,禁止公民在工作日玩紙牌。後來,紙牌遊戲被教會視為異端邪說,傳教士也紛紛遊說,認為「...

[開發]如何讓 Unicode 圖案 (特殊符號) 在網頁上正常顯示?

展示了許多可以取代網站小圖示的 UNICODE,其優點非常顯而易見: ① 字元的傳輸量遠低於圖片的傳輸量。 ② 可以減少許多小圖示的 http 請求量。 那麼接下來的問題會是,要怎麼讓網站所使用的 UNICODE 表情圖案、特殊字元,都能讓所有訪客看到呢? ⑴ 符號數量。 符號數量越多,代表字型檔案越大。目前 Unicode 各國文字的數量太多先略過,屬於圖案的部分超過一千個,持續有新圖案推出。 ⑵ 編碼為 UTF8。 1 2 3 4 5 <!-- HTML4 --> <meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" > <!-- HTML5 --> <meta charset= "utf-8" > ⑶  使用方式 使用 Unicode 的話,這一切就能懶人化,先查閱 Unicode 特殊符號一覽表,找到對應的圖案,例如西洋棋黑騎士圖案,那麼在網頁想顯示的地方,直接擺上 Html 代碼: 1 &#9822; 輸入以上字元就行,但是為方便維護,建議還是將該內容直接貼上「♞」。 注意:在使用不同的字體時,渲染出來的符號可能會有所不同,因此,iOS 和 Android 將一些unicode字元轉換為表情符號。在您使用這些 unicode 字元之前,最好測試一下它們,確定不會出現在不同瀏覽器表現不同的情況出現。

[特攝]網友票選《最帥特攝俳優》你知道這些人氣男星都是超級戰隊英雄出身的嗎?

  網路資源還沒那麼發達的小時候,第四台能看的日本節目其實很有限,偶爾轉到忍不住停下看的特攝作品也成了接收日本文化的媒介之一。如果說拍攝泳裝寫真是日本女星的必經之路,那麼校園劇和特攝日劇應該就是大部分男星的跳板了,尤其《假面騎士》根本等同"爆紅速成班"一樣主演男星幾乎都大紅,但別忘了《超級戰隊系列》也捧紅不少線上人氣俳優。最近日本網站就請網友們從戰隊英雄出身的俳優中票選了一下覺得最帥的戰隊英雄,大家又會第一個想到誰呢?   第10位:山田裕貴(海賊戰隊豪快者)。   第9位:金子昇(百獸戰隊牙吠連者)。   第8位:白川裕二郎(忍風戰隊破裏劍者)。   第7位:中尾暢樹(動物戰隊獸王者)。   第6位:志尊淳(烈車戰隊特急者)。   第5位 永井大(未來戰隊時間連者)。   第4位:千葉雄大(天裝戰隊護星者)。   第3位:玉山鐵二(百獸戰隊牙吠連者)。   第2位:橫濱流星(烈車戰隊特急者)。   第1位:松坂桃李(侍戰隊真劍者)。   真的好多都是日劇演紅之後才驚覺他們有演過特攝作品的俳優,也更讓人想回去重看這些出道作品呢。