Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

在生命轉彎的地方 - 從軟體開發職涯,探索人生 (20231201_5)

Avatar for Rick Hwang Rick Hwang
December 01, 2023

在生命轉彎的地方 - 從軟體開發職涯,探索人生 (20231201_5)

時間:2023/12/01 (五)
地點:成功大學 資工所
主題:在生命轉彎的地方 - 從軟體開發職涯,探索人生

Playlist: https://www.youtube.com/watch?v=8HoZiRXnjMo&list=PL63J1r2PBvohgKY22I0OwoaUlQwmdkZL6

Avatar for Rick Hwang

Rick Hwang

December 01, 2023
Tweet

More Decks by Rick Hwang

Other Decks in Education

Transcript

  1. 3 Rick Hwang 軟體開發者 、音樂愛好者 ,超過 20 年專業軟體工程經歷 ,10 年主管經驗,曾任翔威國際駐

    IBM 資深軟體工程師、 Oplink SQA Manager / SDET Lead、91APP Operation and Infrastructure Manager / Architect、Product Manager、2021 年獲得 AWS 授予 Community Hero 榮譽稱號。 專注分散式系統架構、系統分析與設計、軟體測試、AWS、 DevOps、SRE、經營管理、產品設計 … 等領域,著有技術部 落格《Complete Think》、個人著作《SRE 實踐與開發平台 指南》、共同著作《軟體測試實務手冊 》、譯著《分散式系統設 計》。 工作之餘喜歡金庸武俠、科幻小說、經典文學、哲學、人文藝 術。同時也是音樂愛好者,涉略涵蓋吉他、鍵盤、編曲、教學, 著有音樂部落格《喝咖啡 聊音樂》。
  2. 6

  3. • 學習識別「好」事務的能力,像是好軟體、好音樂、好小說 • 讓自己用 Outside In 的思考方式看事情,而不是 Inside Out (由內而外)

    → 井 裡虧天 ◦ 用 Google Map 的 Zoom In 的方式看世界 ◦ 人生的視野 ◦ 看見怎樣的全貌 • 抽象化、想像力 ◦ 把理論應用在生活當中,或者從生活中看出理論 • 本質思考 探索世界的階段:音樂、故事、軟體 7
  4. 8 培養的能力 1. 逆向工程的能力 2. 賞析、識別好的作品能力 → 特別是音樂作品、軟體 3. 分析、與組織能力

    a. 一堆亂七八糟的東西 b. 或者沒有任何東西 c. 找資料 d. 跨領域 4. 重構、循環改善
  5. 9 探索二:轉換角色 Operation / Infrastrcuture Software QA Software Developer Architect

    Lead Product Manager Engineering Manager 雙軌角色,不斷學習
  6. 10 Backend Ops MIS Infra AWS DevOps SRE Distributed Systems

    持續專注的領域 認知到自己專業知識的不 足,探索 AWS 充實自己 職務轉換,經歷 哀傷五階段 ,接受新的任務目標 探索三:角色轉換而發展的能力
  7. 12 探索四:反覆總結自己想法 • Blog:Complete Think • 面對外在變化的適應力 (反脆弱) • 一個陌生的領域,在有限的條件與時間之內,組織出自己的一套方法與論述

    ◦ 軟體測試、系統維運、 SRE、DevOps、架構師、產品經理 ◦ 分散式系統、AWS / GCP / Cloud Computing ◦ 主管、經營管理、溝通表達 ◦ 人力資源
  8. 13

  9. 14

  10. 15 SRE Conference 2022 - 91APP 在 AWS 上的 SRE

    實踐之路 AWS Summi 2018: 邁向 API 經濟 - API Gateway 導入之旅 AWS re:Invent Recap 2020: - 災難演練 @ AWS 實戰分享 從緊急事件 談 SRE 應變能力的培養 - DevOpsDays Taipei 2018
  11. 16

  12. 個人著作《SRE 實踐與開發平台指南 》 共同著作《軟體測試實務手冊 》 第一冊 • CH01 軟體測試工程師的職涯 手冊

    • CH05 從零開始,軟體測試團 隊建立實戰 第二冊 • CH01 Web Service系統容量量測 的實務方法論 譯著《分散式系統設計》
  13. 20 軟體工作幾種常見的情境 • 情境一:接到一個需求、或者任務,需求不清楚,沒有規格,具體要完成的樣子 也不清楚,但有 Deadline (-Driven Development,DDD),甚至廣告拍好了。 ◦ 理想:有明確的規格

    → RFC ◦ 例如:要做一個短網址服務,下個禮拜上線,今天星期三。 • 場景二:任務是維護 n 個、過去已經跑了十年的系統,相關的人已經離職、或 者下週離職。 • 情境三:任務是一個從無到有的過程。 ◦ 「無」指的是沒有任何制度、工具、流程,成員很多可能也都是沒經驗的。 • 情境四:同三,但是有很完整的團隊角色組成。 • 情境五:面試談的是 ABC、進去沒多久變成要做 123
  14. 21 • Dev a. Developer b. Engineer c. Programmer d.

    Coder e. SWE (Software Engineer, Google) f. 工程師 g. 程式師 h. 宅宅 四個角色、四種專業 • QA ◦ Tester ◦ QA (Quality Assurance) ◦ SQA (Software Quality Assurance) ◦ QE (Quality Engineer) ◦ SDET (Software Development Engineer in Test, Microsoft) ◦ STE (Software Test Engineer, Google) • Ops / Infra ◦ OP (Operator), SysOps, SysOp ◦ IT ◦ SE (System Engineer) ◦ MIS ◦ Infra / Cloud Engineer ◦ SRE (Site Reliability Engieer, Google) ◦ DevOps ◦ SecOps / Security 軟體團隊的「工程師」們
  15. • Plan a. Project Manager (PjM) b. Product Manager (PdM)

    c. Program Manager (PgM) d. Product Line Manager (PLM) e. Product Owner (PO) f. Architect / System Analysis (SA) g. Designer / UI / UX • Research a. 研究員 22 四個角色、四種專業 • Managers (資方代理人) ◦ 1st Line Manager → 副理 / 組長 / 課長 ◦ 2nd Line Manager → 經理 / 部長 ◦ 3rd Line Maanger → Director → 處長 • 經理人: VP 以上 (資方) ◦ 會出現在公開資訊站 ◦ AVP / VP / SVP (副總裁) ◦ GM (總經理) ◦ C-Level: CEO, CTO, COO … etc ◦ Chairman (總裁) 軟體團隊裡「非工程」角色
  16. • 電商:軟體是核心 ◦ 集中式電商 ◦ 去中心化電商 • 金融 ◦ 支付、金流

    ◦ 網路銀行 • 製造 ◦ MES (生產製造) • 純軟:Google、Microsoft • 娛樂: ◦ 直播串流 ◦ 媒體串流 (OTT) 24 「產業」決定軟體的價 值?
  17. 26 內部發動的需求 外部發動的需求 功 能 非 功 能 開 (ㄔㄠ)

    源 (ㄑㄧㄢˊ) 節 (ㄔㄥˊ) 流 (ㄅㄣˇ) A B C D 需求源頭 (Requirement Source) 需求類型 開 發 維 運 組織內的任務樣態
  18. 32 現象二:範圍 • 工具涵蓋的 ◦ Springboot、Java Language ◦ React.JS、Node.JS •

    任務需要的 ◦ Domain Know How • 你以為掌握的:技能、領域知識 • 你實際掌握的:技能、領域知識
  19. Thinking 37 • 學習「好的」框架,學習「打破」框架 ◦ SpringBoot、ASP.NET、FastAP、React.JS … etc ◦ Out

    of the box thinker • 讓自己用 Outside In 的思考方式看事情 ◦ Top - Down • 而不是 Inside Out (由內而外) → 井裡虧天 ◦ Bottom - up • 從生活當中,找到「好」的產品,思考他是怎麼做出來的 • 軟體開發是個「共同創做」的過程,需要大量「溝通」、融合想法,深度思考
  20. 建議一:念 CS 但不想寫 Code • 無論是否要去寫程式,都要嘗試寫寫看,因為寫程式的過程,就是具象化腦袋 裡想法的過程。 • 「程式」是這時代把想法落實的最好工具之一,成本最低 ◦

    有些人會用其他媒介,像是音樂、電影、文字、手做 XX、木工、DIY • 想從事工程師以外的角色,像是 PM,一定要了解軟體開發的實際過程。 ◦ 不了解軟體開發流程,跑去當 Scrum Master、PM 往往會沒有說服力 • 強化對於「產品」的認識,多去論述產品的價值 • 強化溝通表達能力 38
  21. 建議二:義無反顧的從事寫程式工作 39 • 至少精通靜態語言、動態語言各一個,熟悉作業系統、網路原理。 • 習慣:每次 Commit Code 之前要做輕量的「重構」,每次發 PR

    / MR 之前,要 做「完整」重構 • 讀好的開源程式碼,例如 K8s / JDK / Linux 的 Source Code • 閱讀經典軟體工程書籍 • 建立自己的軟體實驗室: ◦ 一台記憶體夠大、硬碟夠快的電腦,可以跑VM / Network / K8s ◦ 個人的投資:通常會是頂規的電腦 ▪ 第一台 NB 2005 : IBM ThinkPad T42p (65k) ▪ 2013: PC: i7-950, 記憶體 24GB, HDD 2TB ▪ 2020: iMac: i9, 64GB, SSD 2TB ◦ 學一朵雲: AWS / Azure / GCP 均可,建立好「成本」概念
  22. 建議三:不是念 CS 但想跳進來的人 • 從實作開始,像是做一個類似 twitter 功能的網站 ◦ Tech Stack:

    LAMP / LNMP • 到各大學校的 Open Course 把資料結構、演算法、作業系統、計算機結構補 齊。 • 強化溝通表達能力 • 善用自己原本的專業領域,例如大氣科學,衛星雲圖跟系統監控 40
  23. 建議四:職場必要的共用技能 - 溝通、協作 • 協作、溝通表達: ◦ 會議、溝通 ◦ 凝聚團隊共識的溝通方法 •

    資訊整合的能力:蒐集、掌握資訊、彙整、摘要 • 看懂局勢的能力:利害關係、從屬關係 • 寫作與閱讀: ◦ 靠北工程師:沒有文件,全靠通靈 • 親和力 → LDS ◦ https://rick.is.lds.guru 41
  24. 組織或團隊裡的人 (找到自己的定位 ) 1. 做東西:就是有技能,像是寫 Code、演奏樂器 2. 總管:有點像把一群人聚起來,變成相互協作的人,像是做出一個系統、一張 專輯 3.

    行腳:把東西推銷出去的人,像是辦演唱會、產品說明會 最多的是 1),像是工程師;總管則像是 PM / PO / 主管的角色:最難找的是 3),把 東西推出去的角色,也就是業務。 42 Source
  25. 44 轉換角色 Operation / Infrastrcuture Software QA Software Developer Architect

    Lead Product Manager Engineering Manager 轉換過程可能是痛苦的, 但每次轉換,都培養出新的能力。
  26. 幾個長期的習慣 45 • 閱讀:小說 ◦ 金庸小說、三體、艾希莫夫 … ◦ 科幻小說、三國演義、成長 •

    寫作: ◦ Blog:整理出自己的目錄 , 深化領域 ◦ 日記:跟自己對話、vlog • 財務規劃:income / outcome • 給自己的獎勵機制 • 做自己的年度計畫 • 做好時間規劃,時間管理 • 持續學習、掌握趨勢 • 培養 STEM 以外的人文領域,讓自己是 STEAM,A is Art.
  27. 47

  28. 階段性的定位自己 • I 型:專注在特定領域,並且鑽研的很深 ◦ Java 專家、電商專家 • T 型:專注在那定領域之外,也橫向發展一些技能

    ◦ 後端 + 部分 Scrum Master • E 型:同時具備多個領域的專長,每個都具備專家 程度 ◦ 後端、前端、Scrum Master、管理 • O 型:全能型人才 → 達文西 48 定位自己的「形狀」
  29. 需求與機會 想做的 (Want) 能做的 (Can) 該做的 (Should) 有機會? (Opportunity) 有技能?

    (Skill) 有目標? (Goal) 個人 持續總結、精練 給自己獎勵 50 決策職涯,複利人生