資深軟體工程師


工程師要像趙雲一樣藝高、膽大、心細。

有些公司,只要是碩士畢業,就掛 高級工程師資深工程師。。。這種感覺就跟 幹訓班 出來,就掛 將軍 一樣軍銜,名不符實。

只要付得起每個月信用卡循環利息最低金額就可以申辦『白金卡』,這信用還真廉價 …

我覺得:

Title 代表的不是表象,而雇主對員工的是信任、期待與責任

那到底怎樣的條件才可以算是 資深軟體工程師?還有其他的 Title?


資深

資深英文 Senior,字面上隱含 經歷時間 的概念。

更精準的「資深」應該是 20 年以上,專注在同一領域的資歷才是,不管是技術的深度、廣度、Domain Knowledge 的範疇,都有一定程度的認識。這等級是跟 Master(大師)幾乎快ㄧ樣(但還是有差)。。。

中文的『前輩』,通常是指年紀相距廿年以上。

歲月累積的經驗,在執行工作時,可以透過經驗,達到必要的水準之上,並且有獨到的見解、判斷力、與方法,雖然見解或方法不見得最佳解或業界標準。

用中文來說,資深 算是 ,像是同樣一件事情做了數十年,透過經驗法則,慢慢改善。工作上有時候會遇到不同領域的人,像是修水電師傅、馬路上鋪馬路的師傅、辦公室裝潢的裝修師傅,這些我都會尊稱他們叫 師傅。因為人家是有技能,可以解決專業問題。

些資深工作者隨著歲月的積累,最後自成一派,然後開山立派。一些知名、且沒有唸完大學的企業家、實幹家都算是,像是 Bill Gates、Larry Page、Steve Jobs …

關鍵字:有技術能力、很多的實務經驗、具備獨到見解、具備獨立判斷能力

專業

資深不一定等於專業。

專業 是經過有公信力的訓練,取得絕佳 科學方法工程實踐 的技術能力,加上後天豐富的 實務經驗,能夠依據需求或問題背景狀況,提出適當的 解決方案,精準的解決問題,如此才是專業。

以資訊業來講,大學裡,資訊工程學系的學科,教授的都是 科學方法工程實踐 的科目,過程會學習很多像是 計算機科學:

  • Operating Systems (作業系統)
  • Algorithm (演算法)
  • Data Structure (資料結構)
  • Compiler (編譯器)
  • Computer Architecture (計算機系統結構)
  • Computer Organization (計算機組織)
  • Computer Network (計算機網路)

等 … 理論科學,其他還有像是軟體工程的課程。

管理者如何持續學習技術? 一文提及一些理論經典、還有工程實踐、經典方法論都算是專業 技能 (Skills) 的展現。但是專業不是只有技能,更多的是運用專業技能解決問題的 能力 (Ability)

這兩大類我個別整理他們的名詞索引:計算機科學專有名詞 整理的是理論科學的範疇;資訊技術與工程專有名詞 整理的則是工程實方法與技術實踐的範疇。

Master 大師

碩士的學位名稱叫 Master ,中文可以翻成 大師,理想上是可以解決專業領域問題的 專家 (Specialist)

不過實際上,生活中這樣的 Master 不多。而普遍認知碩、博士畢業的條件如下:

  • Master: 具備解決問題的能力
  • PhD: 具備發現問題的能力

所以一開始說,資深不一定等於專業,但是專業通常也會是資深。

關鍵字:有公信力的訓練、具備科學方法、工程實踐能力,豐富實務經驗

資深 + 專業 = Master or Monster (Geek)

這兩個簡單說可以是這樣:

  • 經驗:具備絕佳的技術駕馭能力、熟悉工具,同時擁有豐富的實務經驗
  • 專業:有最佳的方法、工具、同時也具備豐富實務經驗,能夠解決問題、提出解決方案

這篇 Programmer Competency Matrix 是給軟體工程師學習的,上面列了各個面向,以及各個面向的深度。一個軟體工程師是否夠專業,這張表是一個參考指標。

經驗代表做過什麼樣的案子?金融?物流?IoT?巨量資料?網路?Gaming?

有經驗、有專業,可以為 大師,像一些公司會給予 Chief Engineer (首席工程師)Principal Architect (首席架構師) 之類的稱號。

Director - 協理、總監

Director 的職務台灣通常叫 協理,中國稱 總監,這幾年台灣大多也都改成總監比較多,因為協理聽起來像傳產,總監聽起來是總字輩的,比較厲害?Director 是管理工作,但以技術管理者的角度,他通常也是技術的專業工作者、資深工程師。

不過 Director 我直覺想到的是 電影導演音樂總監,如底下這段 隨筆 - 2018/09/30:

導演 腦袋裡想的是電影要呈現的 故事主軸劇情曲線、溫度、畫面的鏡頭/顏色、音樂以及張力,分鏡圖 是很常用來溝通的工具。而團隊(演員、攝影師、燈光、特效、配樂家 … etc)要知道如何在導演的指揮下, 具象化 分鏡圖所要表達的畫面;演員 依據劇本、編劇、台詞,用自己呈現出劇情;音樂家 根據畫面的時間軸,根據劇情的情緒與張力,用音符呈現對應的旋律。

另外一段 隨筆 - 2019/06/30:

電影 導演 (Director) 思考的,不是自己如何詮釋演員、特效呈現用什麼技術、場景視野如何轉場,導演思考的是劇情的連貫與節奏、整體情緒的溫度曲線、角色曲線的塑造,看不到的資源安排、資金調度、行銷企劃、後製團隊 … 等。導演思考的不是怎麼做,而是做什麼。

至於演員、特效、場景,不管是幕前的演員、還是幕後的製作團隊,都是給予團隊目標、資源、時間,引導他們發揮最大的潛力與表現,導演是扮演這些角色之間協作的橋樑,但也是協助他們建立彼此協作共識的引導者。

電影上映前,導演引導的除了有演員,也要引導台下的觀眾。透過演員的公眾魅力,讓演員引導觀眾,讓觀眾體驗感動、劇情的節奏、角色的故事,適時的點綴,讓電影的討論渲染整市場,讓演員像觀眾,觀眾像演員,導演自己也變觀眾。

對我來說,能夠實際創造、創作價值,並且實踐的人才夠稱為 Director。

Q and A

Q: 有些公司給的 Title 叫做 高級工程師 代表啥?

A: 通常指的是 專業 的意思,中文如果叫做 專業工程師 識別上會怪怪的。除了專業的意思之外,另外隱含的意思:薪水很高

Q: 所以資深和專業哪個比較厲害?

A: 這問題不能直接比較,一些人沒有受過正規訓練,卻能自成一派,建立一個知識體系,你能說那不夠專業?一堆人拿到碩士學位,卻連留言板都寫不出來,你能說他夠資深?

Q: 那 你覺得 大師 (Master)、大神 (Big God?) 該怎麼定義?

A: 由影響力決定,影響的範圍分成時間、空間兩個維度。影響很久遠,代表時間會證明他的貢獻、思想是正確的,影響力跨越很久的時間線。另外一種是空間,可以擴散到多個地區、國家、甚至是全世界的影響。舉例,金庸是武俠小說大師,影響的時間與範圍都非常之大。著名的分散式演算法 Paxos、Raft 影響範圍之大,Google 的三大演算法論文、Amazon 的 Dynamo 論文,都是影響深遠的,這些才是大師、大神級的。


結論

有一個故事是這樣。。。

有一天一個工廠機械出問題,整個工廠因此停工,公司損失無法估計,而且沒人找得出問題原因,公司找上退休的老師傅,請他幫忙協助找問題。老師傅看了之後,什麼都沒說,只用粉筆圈了機械的某一個元件,說把這個換掉。果然換掉那個原件之後,工廠就恢復運作了。

過幾天工廠老闆收到一張帳單,是老師傅寄來的,上面寫維修費用:『100萬』。老闆驚訝為什麼那麼貴?那個零件也不過幾萬塊?

帳單上明細寫:

  1. 粉筆: 10 塊
  2. 40 年經驗與專業: 99.999 萬

年資有兩個意涵:一種是真的有十年的成長與經歷,一種是十年做同樣的事情。

Google 工程師的職等

底下截圖是 左耳朵耗子 在 twitter 上說明 Google 的工程師職等以及有趣的比喻:


延伸閱讀

參考資料

更新紀錄

  • 2020/05/26: 調整文章結構,補充資料



Comments