Jalex Chang

2024.7.21

6th 曼陀號 Engineering 組月會

工程師技術學習之路

Agenda

  • 技術培養 101
  • 學習之路 Workshop
  • 船長經驗談

技術培養 101

好技術?壞技術?

- 核心概念:沒有無用的技術,只有理解不夠透徹與時機未到。

- 任何技術或知識持續專精,最後都會產生巨大的影響力。

 

[範例] Crescendo's Message Delivery System

漸強實驗室讓大客戶掏錢買單的秘密武器

- 對訊息渠道 (Line, FB, 簡訊...) 用其最高速發訊息

- 600K messages per second

- 99.99% reliability (一年失常低於一小時)

- Best effort exactly once delivery

 

我們做了什麼?
=> 把請求的限速 (rate-limiting)重試 (retry) 做好

學得深?學得廣?

興趣/日常導向的技術培養:

- 不用規劃直接學,心情好/完成任務最重要。雜食完全沒問題👌

 

市場導向的技術培養 (短中期):

- 維持競爭力 => 市場需要 (熱門) 什麼就學什麼

- 增加面試成功率、 提升薪酬 => 廣度影響職缺適任、深度決定薪水職等。

 

職涯導向的技術培養 (中長期):

- 以終為始先規劃再行動。目標 => 規劃 => 執行 => 驗證。

- 主題式學習:確定主題 => 廣泛探索 => 深度實踐

 

推薦閱讀

- Business Trend: “E-Shaped” People, Not “T-Shaped”

興趣/日常導向

市場導向

職涯導向

興趣/日常導向

職涯導向的學習框架

如果想讓技術學習與職涯發展有效搭配,我會這麼做:

  1. 願景:收集情報 (文章、JD),梳理出自己 N 年後想成為的模樣。
  2. 終點:釐清需要哪些技能/成就/經驗,才能支撐目標的模樣?
  3. 起點:現在的我具備什麼技能?擁有哪些資源?
  4. 過程:將起終點差距拆分,以季為單位,設計學習路徑。
  5. 驗證:每季驗證、回顧、慶祝自己的成長。

 

框架核心

- 以終為始先專注在未來,再反推回現狀。

- 想好故事再執行: 確保無論如何都有收穫 (達成目標 or 驗證不適合)

- 回饋循環:每一季都能檢視自己的成長,適時調整,維持動能。

範例 - 願景:我要成為資料庫系統大師!!!!

終點:在三年內精通資料庫系統,熟悉即時應用與資料分析情境下的各式議題與解決方案

- 在作品集中加入四項 OLTP 相關的經驗

- 在作品集加入四項 OLAP 相關的經驗

- 在作品集加入四項 Data cache 相關的經驗

起點:目前任職於一間 MarTech 產業的公司,擔任後端工程師

- 會接觸到的 OLTP 為 PG14 (PostgreSQL 14),但沒有特別關注

- 會接觸到的 OLAP 為 BQ (Google BigQuery),但沒有特別關注

- 還沒有導入 Data Cache,有需求但不急迫

範例 - 願景:我要成為資料庫系統大師!!!!

終點:在三年內精通資料庫系統,熟悉即時應用與資料分析情境下的各式議題與解決方案

起點:目前任職於一間 MarTech 產業的公司,擔任後端工程師

第二年目標習並實踐 OLAP 相關議題與解決方案

第三年目標習並實踐 Data Cache 相關議題與解決方案

第一年目標習並實踐 OLTP 相關議題與解決方案

範例 - 願景:我要成為資料庫系統大師!!!!

終點:在三年內精通資料庫系統,熟悉即時應用與資料分析情境下的各式議題與解決方案

起點:目前任職於一間 MarTech 產業的公司,擔任後端工程師

第一年目標:習並實踐 OLTP 相關議題與解決方案

Y1Q1: 學習 PG (PostgreSQL) 相關知識

- 閱讀 OLTP 相關文章,找出 10 個 PG 與其他常見選擇的差異

- 以 PG 為例,整理 10 個 OLTP 常見的議題與對應的解決方案

- 閱讀 PG14 官方文件 16 個章節

Y1Q2: 實踐 OLTP 相關知識

- ​整理出 5 個公司目前使用 PG 上遇到的痛點

- 針對 3 個痛點,設計解決方案並在內部分享

Y1Q3: 實踐 OLTP 應用優化

Y1Q4: 實踐 OLTP 維護管理

Note

- 量化成果以驗證學習狀況

- 用數量指標取代二元指標 (有 or 沒有)

常用的量化指標

工作落地型

- 針對 XXX 技術/議題,整理 N 個公司遇到的痛點

- 針對 N 個公司遇到的痛點,提出解決方案並分享

- 說服團隊與主管執行 N 個 XXX 相關的[優化|維護|開發]專案

- 執行 XXX 相關優化,並得到 N 個同事的正面回饋


個人專案型

- 閱讀 N 個 XXX 技術/議題的相關文章

- 找出 N 個 XXX 技術與其替代選擇間的差異

- 重現 N 個研究/文章中分享的解決方案

- 交付 N 個 XXX 技術的文章或社群演講

學習之路 Workshop

讓我們來練習看看剛剛分享的學習框架吧~

主題:三年後的自己請求支援

某天清晨,我收到了封 Email,是來自三年後的自己......

主題:來自2027年的問候!
內容:

嘿,這是未來的你!我知道這聽起來有點瘋狂,但我必須找到一種方式來聯繫你。世界已經發生了很大的變化,你也一樣。現在的軟體工程師在辦公室一邊慢跑一邊寫code。為此,我花了三年訓練到該有的體能。
但我卻忘了要學習新技能。喔天啊!完全找不到工作!

你可以幫幫我(未來的自己)嗎?把這些職缺上的技能練好,拜託!
[附檔]......

Workshop 流程

Part1 - 分組設計與討論 (30 mins)
  • 20 mins 個人發想與設計
    • 整理 JD,找出一兩個主題
    • 練習:願景 => 終點 => 起點 => 年度目標 => 第一年的季度目標與指標
    • 如果單獨發想有困難,可以兩人一起。
  • 10 mins 團體交流
    • 分享設計與卡點
    • 選出一位當範例

Part2 - 分享與回饋 (20 mins)

  • 5 x 4 mins 每組分享範例 & 船長回饋

船長經驗談

技術培養經驗談

  • 工程師是高效的執行者,但比較少練習說故事規劃
    • 系統性的學習:學什麼 (why & what) > 怎麼學 (how)
  • 採用學習框架的目的是保持方向維持動能
    • 三年是理想的長度 => 適度的想像空間又不會太過遙遠
    • 季度為單位規劃 => 保留容錯喘息的空間
    • 可以搭配 OKR (Objectives & Key Results) 使用
  • 計畫不是用來達成的,是用來被打破的
    • ​我從來沒有把多年期的計畫走完過 => 執行, 回饋, 調整/廢棄
    • 沒有無用的技術,也沒有白走的路
  • 如果有學習計畫,你的主管會很感謝你。
    • 雙贏 (公司與自身職涯) 的契機
  • 替現在的努力與付出留下痕跡,是給未來自己的禮物
    • 學習計畫本身就是作品集 (Portfolio) 的一部份​

Portfolio - 送給未來自己的禮物

為了驗證自己學習 AWS 狀況:

- 花一季看了 52 部 AWS re-Invent 的 tech talk 並筆記  (notion)

- 用 tech talk 內容幫公司健檢並提出 8 個改善方案內部分享

- 在下一季執行了 5 個改善方案  

此後,每次面試到主管/CTO關時我都會拿出來 kill the game.

結語

Everyone in this world wo​rks based on their Time Zone.

People around you might seem to go ahead of you, some might seem to be behind you.

But everyone is running their own RACE in their own TIME.

 

Life is about waiting for the right moment to act.

So, RELAX. You're not LATE. You're not EARLY.

You are very much ON TIME. And in your TIME ZONE.