Jalex Chang

2024.6.23

6th 曼陀號 Engineering 組月會

軟體工程師職涯 101

Jalex Chang

  • Staff Software Engineer, Crescendo Lab (漸強實驗室)
  • Gopher. An active tech speaker in Golang meetup and COSCUP
  • Love software engineering, database systems, and distributed systems

My LinkedIn:

Unofficial me

私下的我

- 不吃炸物與生食 🚫🍟🍣

- 咖啡因成癮 ☕☕☕

- 喜歡舉重 🏋️‍♀️ 與泰拳 🥊

- Homebody. 週末不是在閱讀就是在打電動 (還有陪太太)📚🎮💻

 

Fun fact

- 透過做家事紓解壓力 => 包辦家裡所有的日常事項,除了煮飯 🛠🧽🧹

- 靠著不吃炸物成功把膽固醇降回正常值 (醫生:現代奇蹟)

Agenda

[上半場] 給未來更多想像

  • 軟體工程師的影響力與價值

  • 軟體工程師的職涯發展

 

[下半場] 船長經驗談

  • 我的職涯發展小故事 

  • Staff Engineer 的生活日常

軟體工程師的影響力與價值

軟體工程師的核心價值

​角色:判斷問題能否被解決 (feasibility) 及如何解決 (solution),並當責 (accountable)

價值:解決問題 ($++) & 說服他人問題無解 (risk--)

 

"XXX 可不可以做?需要多久?"

=> 能好好回答這題便是我們的價值。

=> 為此,我們必須技術、溝通力兼具

 

We are engineers; our job is to find a way to yes. But sometimes yes is not an option. We are the only ones who can determine this.

- Chapter 11. Courage, Clean Craftsmanship: Disciplines, Standards, and Ethics, Robert C.

Be willing to discuss options and workarounds. Be willing to hunt for ways to say yes. Never be eager to say no. But also, never be afraid to say no. You see, you were hired for your ability to say no. Anybody can say yes. But only people with skill and knowledge know when and how to say no.

- Chapter 14. Teamwork, Clean Craftsmanship: Disciplines, Standards, and Ethics, Robert C.

軟體工程師的影響力 - 工程面

Exemplary practitioner:以身作則的能力 (Role model)

Principal Engineers are hands-on and lead by example. We deliver artifacts that set the standard for engineering excellence, from designs to algorithms to implementations. Only by being close to the details can we earn the respect needed to be effective technical leaders.

 

Technical fearless:突破未知的能力 (學習力 & 適應力)

Principal Engineers tackle intrinsically hard problems, venturing beyond comfortable approaches when necessary. We acquire expertise as needed, pioneer new spaces, and inspire others as to what’s possible.

 

Resounding impact槓桿時間的能力 (解決當前問題+長期的好處)

“Deliver Results” is a low bar for a Principal Engineer. Without seeking the spotlight, Principal Engineers make a lasting impact that echoes through the technology, the product, and the company.

- Principal Engineering Community Tenets, Amazon

Resounding Impact - Amazon S3

概念:

設計一個透過 HTTP API 使用的檔案儲存 (object storage) 服務。

 

實際上:

- 至今長達18年的技術與商業遠征,養活了上百個內部團隊。

- AWS 各式產品的基石、分散式系統的領頭羊。每次的突破都是系統領域的新里程碑。

- 上萬科技公司的衣食父母。

Resounding Impact - 我們可以做什麼?

思考:做什麼事情是我離開後,還可以持續為夥伴/公司帶來價值?

 

- "在這次功能上線時,我順便透過 GitHub Action 建立了 CI/CD,之後不再需要手動上版"

 

- "在開發 XXX 功能時,我順便整理了 codebase,把相關的邏輯包成模組,讓元件測試難度下降。 "

 

- "在調整 YYY 的 tooltip 時,我順便在 codebase 裡整了 Lokalise (翻譯協作工具),如果之後 PM/PD 還要調整文案,可以去該平台直接改 translation key,可以省去跟工程師來回的成本。"

 

- “這次的報表需求,我試著改用 Metabase 呈現。它提供了簡單的 UI 介面,讓非工程師的同事也可以拉出自己想要的報表。之後大家可以先試著在平台上拉拉看,有遇到困難再請求協助。”

軟體工程師的影響力 - 產品面

Problem

Problem Define
(Solution)

Product

Discover
(產品發想)

Define
(需求收斂)

Develop
(系統設計)

Deliver
(開發交付)

衡量產品影響力的框架:Double Diamond 模型

Junior

Senior

軟體工程師的影響力 - 組織面

現代軟體公司的核心是人。擁有足夠數量的人才,公司才能用較低的成本槓桿未來

最大的成本來源:流程 (process) => 塑造公司文化 (culture) 延遲流程的制定

 

影響力展現:Technical Branding

- 吸引外部人才: 參與社群

- 留住內部人才: Menotorship

 

推薦閱讀

No Rules Rules: Netflix and the Culture of Reinvention (零規則), Reed H. and Erin M.

軟體工程師的影響力 - 層層加疊

組織

產品

工程

主管/同儕

C-Level

PM

軟體工程師的價值與影響力 - 小結

我們的價值來自 (1) 解決問題, (2) 說服他人問題無解, (3) 為結果當責。

我們透過影響力指標來描述自身的價值。

 

5大影響力指標

- Technical branding: 吸引人才的能力

- 4D level (Discover, Define, Develop, Deliver): 解決(客戶)問題的能力

- Resounding impact: 槓桿時間的能力

- Technical fearless: 突破未知的能力

- Exemplary practitioner: 以身作則的能力

軟體工程師的職涯發展

職涯的本質 - 無限賽局

無限賽局

- 沒有輸贏,不會結束直到退休。

- 目標不是打敗他人 (贏得比賽),而是讓自己保持競爭力 (持續待在賽局裡)。

- 待得越久,獲益就會越大

 

職涯的終極目標:擁有掌控自己時間的餘裕 

=> 我的理想人生是什麼?需要多少成本

=> 需要揮發多大的影響力才能維持

 

推薦閱讀

- The Infinite Game (無限賽局:翻轉思維框架,突破勝負盲點,贏得你想要的未來), Simon S.

- The Psychology of Money: Timeless lessons on wealth, greed, and happiness (致富心態), Morgan H.

職涯發展的本質 - 故事接龍

職涯發展是在寫本人生故事,每段工作經驗都是個完整的篇章。

目標:寫好每段故事,環環相相扣。

 

每一段工作經驗都有它的黃金期限 (ROI最大化)

=> 如何找出每段工作的黃金期限?

=> 故事性 (Narrative)

 

故事性

- 用影響力指標描述,有頭有尾。

- 寫進故事的"大事件"會跟著我們一輩子 => 它們是我們的成長曲線

- 透過觀察故事的發展方向,找到自己職涯的下一個目標。

故事性 - 船長的第一篇章 (3.5年)

我於2018年加入了 Umbo CV,擔任 Junior BE,負責雲端管理平台的開發。半年後,由於人事異動導致團隊內只剩下一個 BE,在多方考慮後,我決定挑戰擔任產品主要開發者的角色。


接下來的一年,除了負責與 PM/PD 釐清需求,開發交付,我也抽空學習如何在 AWS 上維護服務、優化架構,累積 Cloud Architect 經驗。此外,也開始接觸技術社群,在 Golang 社群中定時分享所學。這樣的生活持續到團隊再次補足 BE。而我也藉此升至 Senior,開始負責引領新進成員完成交付


在加入兩年半後,因為公司募資不順引發財務危機。為了幫助公司渡過險境,我主動接下優化系統成本的艱鉅挑戰,在接下來的半年裡,帶著兩個開發團隊,制定並執行各項優化計畫。最終,我們將 AWS 上的系統成本減少 54%,並將 AI 服務上的開發成本減少 64%,公司也順利續命。藉此,我被升至 Staff。


可惜的是,在加入三年半後, Umbo CV 終究因為董事會衝突與收購談不攏,宣告倒閉,無緣走完1到100的過程。因此,我正在尋找可以延續1到100,且財務健康的新創公司

故事性 - 透過影響力描述

我於2018年加入了 Umbo CV,擔任 Junior BE,負責雲端管理平台的開發 (4D - Deliver) 。半年後,由於人事異動導致團隊內只剩下一個 BE,在多方考慮後,我決定挑戰擔任產品主要開發者的角色。

 

接下來的一年,除了負責與 PM/PD 釐清需求,開發交付 (4D - Develop),我也抽空學習如何在 AWS 上維護服務、優化架構,累積 Cloud Architect 經驗 (Technical Fearless)。此外,也開始接觸技術社群,在 Golang 社群中定時分享所學 (Technical Branding)。這樣的生活持續到團隊再次補足 BE。而我也藉此升至 Senior,開始負責引領新進成員完成交付 (Exemplary Practitioner)

 

在加入兩年半後,因為公司募資不順引發財務危機。為了幫助公司渡過險境,我主動接下優化系統成本的艱鉅挑戰 (Technical Fearless),在接下來的半年裡,帶著兩個開發團隊,制定並執行各項優化計畫。最終,我們AWS 上的系統成本減少 54%,並將 AI 服務上的營運成本減少 64%,公司也順利續命 (Resounding Impact)藉此,我被升至 Staff。

 

可惜的是,在加入三年半後, Umbo CV 終究因為董事會衝突與收購談不攏,宣告倒閉,無緣走完1到100的過程。因此,我正在尋找可以延續1到100,且財務健康的新創公司(目標)

故事性 - 經驗與心得

- 好的開場是成功的一半 => 三個月內寫不出開場,代表角色定位模糊(危

- 養成“先想好故事再實現”的習慣 => 多年 staff engineer 職涯的血淚經驗

- 好的故事需要時間醞釀 => 數年的累積只為了幾個月的開花結果

- 不要執著是否進步,目標是留在賽局裡。

 

職涯發展大哉問 - IC vs Manager

工程主管不是工程師,是有相關工作經驗,擅長與工程師溝通的管理職。讓 IC 有效發揮影響力是管理職的工作核心。工程主管專注在管理資源(工程師), 流程 (升遷, 產品開發, Support) , 效率

 

- 選擇管理職是轉職,不是升職。


- 薪酬對價職等 + 職等雙軌制
現代科技公司的趨勢


- 高階管理職與高階 IC 職缺稀少,
但符合條件的人才更少。

 

IC Title  Job Level Manager Title
SWE I L3 -
SWE II L4 -
Senior SWE L5 Manager I
Staff SWE L6 Manager II
Senior Staff SWE L7 Senior Manager
Principal SWE L8 Director
Distinguished SWE L9 Senior Director

職涯發展大哉問 - 軟體工程師是否會被 AI 取代?

個人想法:職場生態會逐步改變,但人本身很難被取代,因為

(1) 我們的核心價值是解決問題或說服他人問題無解,並為結果當責

(2) 駕馭新技術是 Technical Fearless 的基本。

(3) 破壞式創新 (Disruptive Innovation)的本質:舊時代的消逝、新時代的崛起。是自然的循環。

 

如何與新技術共存:

- 使用它。 (範例:我與 ChatGPT 日常對話)

- Think big, start small, and act fast.

 

推薦閱讀

- Think Big, Start Small, Act Fast
- The Innovator's Dilemma: The Revolutionary Book That Will Change the Way You Do Business (創新的兩難), Clayton C.

職涯發展大哉問 - 軟體工程師什麼時候會被淘汰?

當我們失去能量動機無法支撐影響力的時候 => Burnout

對組織來說,A Player 需要滿足三個條件:

動機
(Motivation)

文化
(Culture Fit)

能力
(Competence)

是否有足夠的能量與動機維持成長,在未來發揮更大的影響力?動機是否與公司利益一致?

是否符合公司的價值觀?

是否有足夠的技術與溝通能力勝任目前的職位?

軟體工程師的職涯發展 - 小結

- 職涯是場無限賽局,沒有輸贏。

- 職涯的目標是擁有掌控時間的餘裕,為此我們必須盡可能留在職場上。

- 職涯發展是一段段的故事的集合。透過影響力指標評估價值,把每段經驗好好寫下。

- 關於寫故事,好的開場是成功的一半。

- 養成"先想好故事再執行"的習慣。

- 選擇管理職是轉職,不是升職。

- 淘汰我們的不會是 AI,是自己 (能量與動機)。

中場休息 & 分組互動時間

題目:覺得成為高階工程師或管理職需要哪些特質?

為什麼這些特質重要?怎麼連結到剛剛分享的影響力上?

我的職涯發展小故事

From junior to senior - Backend 3-2

我於2018年加入了 Umbo CV,擔任 Junior BE,負責雲端管理平台的開發。半年後,由於人事異動導致團隊內只剩下一個 BE,在多方考慮後,我決定挑戰擔任產品主要開發者的角色。


接下來的一年,除了負責與 PM/PD 釐清需求,開發交付,我也抽空學習如何在 AWS 上維護服務、優化架構,累積 Cloud Architect 經驗。此外,也開始接觸技術社群,在 Golang 社群中定時分享所學。......

 

心路歷程

- 夥伴們在新專案開始階段離開 => 責任感爆發,不想看到專案開天窗。

- 剛出社會,沒有經驗 => 覺得沒有好失去的,設好停損拼一把。

- 主管的持續支持與照顧 => Golang 社群的 co-organizer,給我各種機會成長。

 

爆累,幾乎是 997 地把所有 BE 相關的知識與技術在一年內走過。

From senior to staff - Resounding impact or dying 

在加入兩年半後,因為公司募資不順引發財務危機。為了幫助公司渡過險境,我主動接下優化系統成本的艱鉅挑戰,在接下來的半年裡,帶著兩個開發團隊,制定並執行各項優化計畫。最終,我們將 AWS 上的系統成本減少 54%,並將 AI 服務上的營運成本減少 64%,公司也順利續命。藉此,我被升至 Staff。

 

「想辦法讓公司活下來」- David Chou, 某個農曆年前夕.

 

心路歷程

- 工作日常上能學的都學得差不多 => 開始覺得無聊

- 公司遇到財務困難,資金跑道只剩下三個月 => 時間所剩不多,試試看也無仿

- 適當的裁員 => 士氣大增,大家眾志成城想一起走過最後一戰

 

每天盯著成本報表,分析系統每一段成本的組成,找出還可以壓榨的地方。

用盡所學,翻遍各種書籍與 AWS 文件,試遍各種偏方與都市傳說。

Afterparty or after the party?

不是每段故事都有美好結局

但我得到了一群刻骨銘心的戰友

攝於 2021.10.09, 公司倒閉的兩個月後:

LC (Leet Code) 自救會:

Lesson Learned 

- 職涯最好的機會通常來自組織最壞的時機。

- 機會不是給準備好的人,是給願意承擔風險的人。

- 好的主管很重要,一起前進的夥伴也很重要 => 人很重要 => 公司文化很重要

Staff Engineer 的生活日常

Staff+ Engineer 的影響力 - All about Alignment

還記得上半場介紹的 Double Diamond 模型嗎?讓我們來延伸個:

Problem

Problem Define
(Solution)

Product

Discover
(產品發想)

Define
(需求收斂)

Develop
(系統設計)

Deliver
(開發交付)

Junior

Senior

Vision

Delve
(深度洞察)

Diagnose
(策略擬定)

Staff+

Align decision-making from vision, problem, and solution to product.

Staff+ Engineer 的日常 - Technical Alignment

Vision: 在 CL 裡,不論在哪個產品上會員資料都是相通的。

深度洞察:搜尋功能到處都是,功能實作/資料來源不一,陸陸續續開始遇到效能問題。

Staff+ Engineer 的日常 - Technical Alignment

策略擬定:"Simplify to amplify",  將所有會員相關的搜尋功能/優化集中到單一服務上。

用一個通用的解法取代各別的優化。

Staff+ Engineer 的日常 - Technical Alignment

策略不會自己被執行。

證明其可行性,並引領團隊成員一步步前進:

Staff+ Engineer 的日常 - Product Alignment

Context

- Support ticket 快要滿出來啦~~~

- 團隊成員光是解 support 就飽了 => 導致不是產品交付延遲,就是默默加班硬扛。

Staff+ Engineer 的日常 - Product Alignment

擬定多贏策略,並說服 Stakeholder (產品&主管) 執行 - Reliability Push

Staff+ Engineer 的日常 - Product Alignment

(1) Celebrate and ack their contribution, (2) shout out their impact on the company, and (3) hold a retro to make the next execution better.

Staff+ Engineer 的日常 - Mentorship

以身作則, 分享經驗, 設立標準, 提供範例:

Staff+ Engineer 的日常 - 大哉問

- 每天都在做些什麼 => 觀察、思辨、PoC、溝通

- 溝通的對象 => 工程與產品部門的所有人、其他部門的主管、 C-level

- 什麼時候會寫 code => PoC, 救火, side-project

- 怎麼保持手感 =>

- 需要怎樣的特質才能成為 Staff+ Engineer ?
(1) 團隊意識 (Team player) => 在意團隊/同儕的成長

(2) 同理心 (Empathy)=> 看到問題的核心 => 還記得海選時的題目嗎?

(3) 以身作則 (Hands-on & Lead by example) => 高階工程師與管理職最大的差別
 

推薦閱讀

- StaffEng

- The Staff Engineer's Path: A Guide for Individual Contributors Navigating Growth and Change (Staff 工程師之路), Ranya R.

結語

Don’t fall into the trap of thinking that it is your employer’s job to train you. This is your career—you have to take responsibility for it. It is your job to learn. It is your job to figure out what you should be learning.

- Chapter 14. Teamwork, Clean Craftsmanship: Disciplines, Standards, and Ethics, Robert C.

6th MentorShip Meetup - Engineer Career Path 101

By Jalex Chang

6th MentorShip Meetup - Engineer Career Path 101

什麼是軟體工程師?價值為何?未來在哪? 身為軟體工程師的我們,該如何發揮影響力?

  • 213