推 yangs0618: 推個 希望有機會聽到進一步分享how10/28 07:58
→ yangs0618: On提出數據說服主管/管理層 開發是越來越耗時間10/28 07:59
→ panbanana: 要怎麼跟上頭說開發越來越久跟code quality有關10/28 08:18
幾個很簡單的學術名詞就能說明,我相信大家也知道
耦合性 如果我改A模組,B模組就需要跟著改 (這還是B模組沒有牽連其他模組的情況下)
經驗法則告訴我們 改的模組越多,消耗的時間也越多
所以時間成本增加
正交性 如果一個錯誤設計的函數其副作用會影響到非預期的變數或狀態(非正交)
非正交的設計會導致bug甚至影響業務的正確性
生活化的例子:「如果你今天開熱水器,結果旁邊的維波爐也開了」
不會抓狂嗎?
所以時間成本增加(你要再請工程師花時間解bug甚至賠償客戶)
粒度 你是希望有一千個功能相似又微妙差異的工具,每次要選擇都要重新翻箱倒櫃
還是你是希望有十個零件可以組出一千種功能?
不一定有對錯,但從新人教育程度跟熟悉的速度,
認識十個零件肯定是比一千個工具之間的細微差異還簡單
粒度低可以降低時間成本
這些都是理論,我相信對沒有技術背景的人來說也不難懂
那數據呢?統計呢?
從ticket、commit的內容我們可以發現,一定是有某些模組、某些類別、某些函數經常
被更改,而這些程式碼才是最有價值的地方,因此程式碼的重要性、頻率是可以從執行
紀錄、commit等資訊來加以量化的
如果某個模組特別容易出bug,很有可能是其模組本身或是其使用的模組有問題
這時你才有機會說服管理階層建立測試及其重要性
管理階層重視的不是工程師寫程式舒不舒服,而是用戶有沒有受影響?能不能減少公司
的執行成本?
測試可以盡量避免工程師改壞功能,而只有保證不改壞程式碼,工程師才有可能說服
管理階層允許大幅改寫原始的程式碼
而如何證明code quality跟test可以降低執行成本?這需要有證明的材料,如果某個
模組的code quality很高,而該模組相關的開發與維護速度都比其他模組來得有效率,
那也許可以透過比較間接證明此觀點 (但有些政治因素比較重的辦公室,我不推薦你
去比較)
如果現在沒有"你認為"品質好的程式碼,你就只能不斷透過能力證明而且去創造
你要說服管理階層,只能從管理階層重視的價值著手
最後做個總結:
遇到code quality差的公司建議直接跳槽