# 靈能的挑戰:從碼農開始的通靈王之路 - Kyo Cheng {%hackmd LeyMdnM3Q4ipfr57bkqpyA %} #### [📚 ://webconf.tw/agenda/day1-1-f) ###### ▼▼▼ 開始筆記 ▼▼▼ [簡報](https://docs.google.com/presentation/d/1OkdFs2CjQHN5M_UJjqfd38BSuZNtCkhnOQFFgzdjJYs/edit?usp=sharing) 通靈會跟著工程師ㄧ輩子... (真有感XD 來自Titansoft的Kyo The battle of psychics 12 年全端經驗 TibaMe 主要後端工程師 高雄小型讀書會 Certification: PMP CSM CKAD (k8s) 高雄經營小型讀書會五年以上,熱愛參與活動 沒有經營粉專部落格跟寫書 ### 首先 什麼是碼農? 一直需求來就做,重複性的工作沒有太多的思考。 技術門檻低,沒有決策權,可能資策會轉職就可以出來找工作 需求來就做 重複性工作 缺乏決策權 技術門檻低 --> 容易被取代 往下一階段 ### 何謂通靈? > 這在我的機器上可以 work阿 我沒動這裡的程式啊 log + code + domain 皆不知 ### 未知帶來恐懼 - 未知領域 - 已知領域 已知=> coding 未知=> - Legacy - Infrastructure - Network - Net Technology 其他未知 - 盲人摸象 -> 無法掌控全貌 - 不熟悉的 domain - 使用者需求 需要擴展知識 ### Observability - 日誌 捕捉事件記錄已進行分析和故障排除 留下執行行為 - 指標 提供量化數據以進行效能測量級趨勢分析 - 追蹤 追蹤請求在系統中的鏈路已進行流程分析 使用漏斗把鏈串起來 #### Example Spooler 接收 VM / Pod+Container beats -> logstash -> elasticsearch -> kibana 把log切成多個欄位的時候,就可以有效的在kibana上面可以做搜尋 使用關鍵字 #### 指標 Resource Metric Victoria -> 強化版 Prometheus 再透過Grafana去抓到dashboard Grafana 可通 victoria 也可通 ElasticSearch 設置好觸發事件 持續用 Prometheus Query DB 集合起來使用 Grafana 送到各地 ![466822693_572547015671509_2602166781668264818_n](https://hackmd.io/_uploads/SJBi1KoB1e.jpg) #### 追蹤 - APM APM 可以去看 api routes 的 latency 就可以在ELK上面看到數據 Open Telemetry (otel) 圖中的 Bar 可以看執行時間 #### 追蹤 - Distributed Tracing 透過ELK就不用去跑很多的服務追log就可以整理同一個trace.id找到他經過的所有不同服務。 可以透過opentelemetry來做,或是來做request.id放在header自己來做,傳到所有的微服務可以持續往下送,只要parsing出來就可以看到request在不同微服務的路徑 #### 真的需要微服務嗎? - 微服務的錯誤起手式: 職責拆分 教室 課程 會員 都切成微服務,做一個賣課程的功能結果還是需要 release 全部專案 - 溝通節點變多 Coding 複雜 - 還沒享受到好處被壞處搞死 #### 推薦的微服務 前期收集資訊, DDD Domain Driven Development 前期資訊 bounded context 巨 - 討論出bounded context - 將相關的bounded context聚合成monorepo #### 拆分時機 - 特定bounded context變更頻繁 - 特定bounded context流量較大 - 其他Z>B的時候 - 其他利大於弊 #### 通靈 Case 1 API hotspot invalid cache固定早上八點失效,但他就會更新,中間有空窗期,就會導致request持續進來,導致cpu high,若是有可觀測性你就會知道問題在哪裡了 Web API loading is heavy ### 見樹不見林 專注在一個點,卻互略了外在因素 #### 通靈case 2 這 SQL 在我電腦上跑很快 Prod環境慢到不行 (這裏請在場觀眾舉手表決) - [ ] 資料量變大效能不穩 archiving(定期拿出資料) - [ ] 變數不同執行計劃 paramteter sniffing (index建立) - [ ] datalock 查詢速度不穩定 transaction - [ ] 網路架構不同 查詢速度不穩定 infrastructure 實際上四個都有可能 上面的domain知識略有不同 ### 軟體人才T形 Broad Ability to work outside of core area Deep Ken Rubin - A Counterbalance to the Work variability from sprint to sprint 應對每個 Sprint 工作變化的平衡之道 好的敏捷團隊都是T形,這樣會限縮你對需求的想法,你有更多的思維面對issue有更多的想法,面對通靈的時候可以更快地知道通靈的發生原因 不要限縮領域,可以更瞭解需求 廣度 > 深度 除了webserver外,資料庫 sql cdn cache多了解之後你面對問題的時候就會有更多的想法 #### 通靈3 字體錯誤 緬甸使用者回報在電腦上數字會畫面跑版 數字畫面跑版 ``` x.toLocaleString('my-MM') ``` > 原來是電腦缺失緬甸字型 ### 知識廣度不僅僅只是技術 #### FinOps 不是技術也不是語言,是一個框架 團隊透過框架理解有沒有資源浪費 造成浪費利潤會吃掉,公司會倒掉 https://www.finops.org/framework/ 用此網站,團隊討論是否有浪費 > 平均 100 元中有 30 元是浪費掉的 ![466822693_572547015671509_2602166781668264818_n](https://hackmd.io/_uploads/rypOGtsHJl.jpg) Titansoft use dashboard to observe the cost Kubecost - Third-party ### 需求來自觀察 客戶 + PM 皆不知 客戶通常說顯性需求,但真正需要的是隱性需求 * 站在背後觀察 * Persona * Hotjar #### 延遲決策 - 晚一點下決定,先試著了解背後解決的痛點 延遲決策!=拖延 透過迭代著不讓需求明確 #### 通靈檔案cas4 -> 你的需求不是你的需求 請幫我做一個首頁新增公告,通知新增需求 示圖了解背後的痛點 - 5 why - 新增公告的需求 - 錯過重要通知 - 難以區分訊息的重要性 - 通知缺乏優先級 - 渴望重要訊息即時被看見 這個痛點是否一定是用這個解法,也許不是,有沒有更好的解決方式: 說不定新增icon顏色就可以解決問題,想一下痛點提出更多方案給使用者,可以誕生更好的解決方式 ### 第一性原理 第一性原理 你將事物分解到最基本的事實,從這些基礎向上推導出各種結論 first principles is a physics way of looking at the world. you boil things down to the most fundamental truths and then reason up from there. Elon Musk ## 產品經理 vs 軟體工程師 PM 專注商業價值 Engineer 實現產品功能 PM & Engineer 不是一刀切分,應該是互助讓產品更好 ### Product Developer 業務領導技術前進,技術支持業務成長 business lead to technology innovation #### 一切從產品出發 持續改善 觀察成效 收集回饋 中心是技術成長 #### 如何提升成員對資料的 awarness (Workshop) * 設定資料需動的目標 (ex: 定KPI) * 不只上線,還要觀察成效 - 使用視覺化工具,讓資料融入開發日常 - (All Hands XDD) - 建立用數據說故事的文化 - 為何雙11成長 ### 再來談溝通這件事 PM 我想要爬蟲APP資訊 - APP 爬蟲 - Wireshark --攔截並分析網路封包,取得數據 - OCR 截圖提取文字內容 - Accessibility 利用無障礙API 模擬操作並獲取結構化資料 - Appium -> 自動化模擬操作,擷取畫面資料 上面說的做法你們都知道吧? .. 不是只丟名詞 我可能被知識詛咒了 我給你一副牌,但你給我的pair可能跟我的認知不同 pair -> Pocker vs Pockmon (火伊步) ### curse of knowledge ![image](https://hackmd.io/_uploads/HJY1SKoHkl.png) ### 我們討論需求的時候不是 TitanSoft 中的討論工具 - 便利貼 - 白板筆 - 蕃茄鐘 - 佈告欄 利用圖畫的方式讓彼此的認知在同一條線上 ### 最容易發生知識詛咒的場域?HERE 我們背景知識不一樣 XDD 在座的各位 會後簡報會放在上面 ### One More thing - 提高自己的知識體系 - 全域搜尋程式碼 通訊軟體訊息 - domain chatbot by ai agent (ex. notebookLM) - 快速找到對應的窗口 - 善用 AI 工具 - Code Review, refactor unit test, document - VScode extension: copilot with sonet model - Cursor - generate vue from Figma - others ### AI是良藥也是毒藥 70%的問題:AI的學習曲線悖論 非工程師在使用ai工具的時候可以快速的完成七成的工作,三成的工作變成了事倍功半的挑戰 工程師多年累積的經驗應用於塑造跟約束AI的輸出 AI加速了實現過程,但他們的專業知識才是確保產品上限的關鍵 30% 變成事倍功半的挑戰 專業知識才是確保產品可上線的關鍵 不是產生幾百字就好,工程師也要看 系統需求本來就不是幾百字 prompts 可以描述出來的 非工程師用prompt可以得到很快的成就感,但工程師可以的專業才可以最後確保東西可以上線 > 問 ai 少了一個痛苦的過程,學習必須要撞牆過才會變成長期記憶 建立可觀測性:讓所有行為、產品都都在陽光下 提升知識廣度 需求來自於觀察 避免知識詛咒 業務領導知識前進,技術支持業務成長 科學的盡頭是玄學 <div style="color:red; font-size:50px">科學的盡頭是玄學啊</div> 快樂來自於交付有意義的成果!! ###### 聊天區 macbook 的中文輸入很雞肋 知道要舉四次會懶XDDw 簡報上線讚讚