從技術前輩的視角理解技術決策,從技術前輩的視角理解技術決策,技術世界的不斷變化,工程師的智慧決策之道,理解工程師心路歷程通道,從技術架構到技術選題的考量,邁向真正的資深工程師。
Caesar Chi
Caesar Chi2023/08為何技術老⼈這樣想那樣做?從技術前輩的視⾓理解技術決策
View Slide
Caesar Chiclonncd
Caesar Chi2.0@clonncd@clonn
AI for Dev 社群
議題• 技術世界的不斷變化• ⼯程師的智慧決策之道• 理解⼯程師⼼路歷程通道• 從技術架構到技術選題的考量• 邁向真正的資深⼯程師
技術世界的不斷變化
⼈⽣唯⼀不變的就是變
⼈⽣唯⼀不變的就是變擁抱改變,邁向改變
追求卓越,擁抱改變
遠離惡,迎向善⾒賢思⿑,⾒不賢內⾃省
舉例Github
10 年前: 全球最⼤⼯程師交友網站
前端摩爾定律
前端摩爾定律每隔 18 個⽉前端複雜度將會增加⼀倍
https://www.monocubed.com/blog/best-front-end-frameworks/
前端摩爾定律每隔 18 個⽉前端複雜度將會增加⼀倍擁抱改變,邁向卓越
理解⼯程師⼼路歷程
每個卓越⼯程師都是如此的與眾不同
⼀個 AM ⼀個 FM,⼤家的頻道都不同因此⼤家的頻率也有所不同
對於同⼀個服務,要怎麼架構⼀百個⼈⼼中有⼀百個哈姆雷特
對於同⼀個服務,要怎麼架構總有不同看法
客觀⾓度,採⽤『比較舉證』分析
主觀評斷同時也存在著客觀⾓度,採⽤『比較舉證』分析
主觀評斷同時也存在著
同時也存在著主觀評斷
同時也存在著主觀評斷更不⽤說那⼀切的不理智及理智
同時也存在著主觀評斷更不⽤說那⼀切的不理智
不理智及理智• 項⽬需求與⽬標• 技術成熟度• 相容性• 可擴展性與靈活性• 成本效益• ⼈才與技能匹配• 法規與合規性• 社群與供應商⽀援• 未來可持續發展性• 測試和部署的便利性更不⽤說那⼀切的
⾝為⼯程師,我們都很希望⽤全新技術,打造最威的服務
⾝為⼯程師,我們都很希望⽤全新技術,打造最威的服務無奈現實不允許
Junior Developer持續學習技術,實踐技術
Junior Developer:像海綿般,持續吸收滿⾜安全需求,實現⾃我
Senior Developer:被需要感,被尊重感,⾃我實現
Senior Dev:試著向上(下)提案企圖實現⾃我
提案者與決議者思考⾓度
⾝為提案者• 有需要改• 專注細節• 如何執⾏• 個⼈利益,團隊利益⾝為決議者• 有無需要改?• 專注戰略• 如何永續• 資源分配,成本效益
⾝為提案者• 有需要改• 專注細節• 如何執⾏• 個⼈利益,團隊利益⾝為決議者• 有無需要改?• 專注戰略• 如何永續• 資源分配,成本效益當兩者談不下去時容易陷入僵局
⾝為提案者• 有需要改• 專注細節• 如何執⾏• 個⼈利益,團隊利益⾝為決議者• 有無需要改?• 專注戰略• 如何永續• 資源分配,成本效益對⽅是⽩癡 對⽅是⽩癡
⾝為提案者• 有需要改• 專注細節• 如何執⾏• 個⼈利益,團隊利益⾝為決議者• 有無需要改?• 專注戰略• 如何永續• 資源分配,成本效益如何換位思考,進⾏說服
⾝為提案者• 有需要改• 專注細節• 如何執⾏• 個⼈利益,團隊利益⾝為決議者• 有無需要改?• 專注戰略• 如何永續• 資源分配,成本效益如何換位思考,進⾏說服提案者要建構⾜夠信任
何謂信任感?
⾝為提案者• 我是誰• 企劃規劃,盤點規劃• 現有資源,執⾏步驟• 建立⼝碑,完成使命⾝為決議者• 你是誰?• 你想做什麼?• 你做得到嗎?• 交給你有風險嗎?
有的時候不是提案不好
有的時候不是提案不好是,你不好
有的時候不是提案不好是,你不好 • 信任度• 成熟度• 穩定度• 執⾏度
因此同樣的提案不同的⼈提議,會有不同效果
每個⼈說話份量,本就不同命,本就不由我
運,掌握於我
如果你真的很愛這⾨技術超級想推廣此技術
思考的⽅式『如何達到⽬的』
思考的⽅式如何達到⽬的⽽不是如何,我,達到⽬的找到適合的切入點
1. 找到適合的切入點2. 找到『適合的⼈』3. 或者擔任那位『沒有⼈』看準時機,找到出⼿點
那些技術債所不愛的東⻄
每個上線的服務背後總有說不清的⾎淚
到處都是壞味道Bad smell
知道就是要改
知道就是要改我也知道...
無奈真的太多
要改的東⻄太多那就改天吧
時空背景技術迭代架構選題
當然無知 或 視⽽不⾒也是肇因之⼀《知識的假象》:無知並不可怕,⾃我感覺良好的幻覺才是
當然無知 或 視⽽不⾒也是肇因之⼀但,這群⼈不在我們今天討論範圍
既有架構的改變流程
1. 取得共識, 讓夥伴認同,⼀起進⾏改善2. 改變⾃⼰, 從⾃⾝習慣做起,影響他⼈3. 改變他⼈, 讓共識得以持續你可以這麼做
1. 取得共識, 讓夥伴認同,了解調整到 Model 層的好處以及這是現在及未來趨勢。2. 改變⾃⼰, 經⼿ feature 相關檔案,直接進⾏Model 調整,讓其他⼈ Code review3. 改變他⼈, 將 Model 的調整視為 Spec 之⼀,當 code review 或者程式交付時,讓 Model 的整理成為嚴守底線舉例: 讓儲存的統⼀於 Model 層
上述項⽬需要取得上層授權同時取得集體共識此時建議要具備成本結構
嬰兒期: 可⾏,快速因應調整成長期: 思考,需拿捏改動時機點,機會成本考量成熟期: 可⾏,持續進⾏優化,企圖尋找擴張點衰退期: 不可⾏,產品進入退縮階段,優化效益過低
⾯對架構改善,試著思考幾個問題1. 有沒有比這個更重要,更急的事情?2. 現在做了會有什麼影響?3. 現在不做會有什麼影響?4. 有沒有更簡單的做法?
最佳程式碼• 技術架構到技術選題的考量
最佳程式碼Short Code is better
最佳程式碼Short Code is betterNO Code is the BEST
AI ⽣成,從多語⾔到程式語⾔程式語⾔可能不需要透過各位編寫
開發⼈員更需要具備抽象轉為具象的思考執⾏項⽬前進⾏具體 PDCA
https://githubnext.com/projects/copilot-voice/Type less, code more
邁向真正的無碼化程式碼都透過 AI ⽣成開發者真正的價值在於抽象與具象化之間轉換
技術者終其⼀⽣都在追求
https://www.moedict.tw/%E7%A5%9E%E4%B9%8E%E5%85%B6%E6%8A%80
神乎其技DDDDeadline driven Development
任務難度拖延程度筏值筏值放棄
避免讓⾃⼰陷入放棄
先從已知的已知建立起習慣
先從已知的已知建立起習慣已知的未知
隨⼿清理程式債(垃圾)養成好習慣
隨⼿清理程式債(垃圾)隨⼿做功德
學習 n 項技術技術⽂件程式碼閱讀
學習的歷程
Online Course老⼈: 書籍年輕: 影⾳,線上課程,Tiktok
從⽂字年代到影⾳年代老實說,⾃⼰也還在適應
程式會改版,⽂件也會但,課程可能不會
我們會透過 Google茫茫⼤海的尋找⽅向
⽂件通常有最佳解https://vuejs.org/guide/introduction.htmlhttps://vuejs.org/api/https://react.dev/learnhttps://react.dev/reference/react
⽂件與程式碼有差異Issue & Source code 能求解https://github.com/vuejs/core/issues
習慣,感受閱讀程式碼的快樂
Source code + git log
因此讀書的重要性⼼中從有碼到無碼之路只有從深入閱讀,才能了解技術之美
試著閱讀程式碼開放⾃⼰的程式碼⼼中從有碼到無碼之路只有從深入閱讀,才能了解技術之美
最後總結
⼀,命⼆,運三,風⽔四,積陰德五,讀書
⼀命,天⽣註定但努⼒可調⼆運,掌握在⾃⼰⼿上,努⼒爭取三風⽔,了解整體局⾯,找到適合切入點四積陰德,隨⼿修代碼,留給更好的下⼀代五讀書,⽂件程式碼的閱讀,⾃我修養的成長Junior Dev Senior Dev
Q&AThank youAI for Dev jsdc.tw FB: Coding bear