技術債務是對業務功能缺乏真正的理解 -daverupert.com
技術負債概念提出者Ward Cunningham認為:長期開發一個應用程式時,我們是透過不斷新增功能進行的,但是卻從未對其進行重新組織以反映我們對這些功能的理解,那麼最終該程式將根本不包含任何理解,因而在其上繼續工作程式設計所付出的努力將花費越來越長的時間。
知識管理在組織中是如此重要,但是他們很少經過關鍵的重構來反映當前的理解。
必要時需要進行大規模重構。如果組織的營業額足夠大或產品中的功能不斷增加,那麼進行重寫是最好的選擇,這樣您的團隊對程式碼有個整體的瞭解。不能指望人們在繁忙的程式設計中會實現難以理解的需求,或者在已經離職人的遺留程式碼中提高工作效率。
使用一個通俗解釋:如果吃完飯不洗碗不打掃廚房,那麼慢慢地就吃不到下一頓飯,重構就是洗碗。
技術債務不是寫得不好的程式碼:您編寫程式碼是為了反映您對問題的*當前*理解。如果這種理解是“部分的”,那麼您將承擔債務,即使如此,您仍會交付軟體(以瞭解更多資訊)。但是,您必須償還債務:您必須將新的知識納入軟體。
這就催生了兩個階段,第一個階段是你部分理解業務的程式碼,第二個階段是你償還債務納入新理解的程式碼,您必須滿足第一個緊迫的階段以後(先交付原型獲得客戶認可),才能獲得後續第二個階段所需的經濟資源(客戶肯定你沒有走錯方向,提供資源讓你繼續按照這個思路走下去)。因此,您需要做出戰略決策,為第一階段編寫次優設計。之後,您可以償還債務並在第二個階段之前改進設計。
關鍵是必須*償還債務。您支付的能力取決於程式碼的乾淨程度(因為您需要重構)。
- 乾淨的程式碼是技術債務的前提。
- 過度耦合的無法維護的程式碼庫不是技術上的負擔。只是一團糟。
但是,根據精益起步創業(Lean Startup)的方法,這種債務對於創業起步公司幾乎是強制性的。但是正如您所說,對於科技創業公司來說,有必要編寫簡潔的程式碼以償還債務。
對於開發人員無法消除的詛咒是:您只瞭解程式碼,但您卻很少是領域專家,因此當按期限要求時,您會假設有關領域的知識,但是這種第一性假設後來被證明是錯誤的...
獲得領域的經驗確實是一個挑戰,並且可以說是構建高質量軟體的關鍵之一。這就是為什麼人們喜歡強調領域域驅動設計(DDD)原因。
相關文章
- 你瞭解什麼是技術債務嗎?
- 吐槽“技術債務” - morethancoding
- 理解「業務」與「技術」概念
- 應對 DevOps 中的技術債務:創新與穩定性的微妙平衡dev
- 用GC的策略,管理團隊的技術債務GC
- 業務重要?還是技術重要?
- 2021年,是時候把技術債務管理提上日程了
- 什麼是技術債,為什麼要還技術債?
- 建議將技術債務為科技財富 - incrementREM
- 技術債務讓51%的工程師考慮辭職 - venturebeat工程師
- 對事務的理解
- 產品經理如何幫助減少技術債務 ?
- 一個軟體開發團隊多少人合適? 大型團隊失敗是由於缺乏共識和溝通帶來的技術債務 -mfeather
- 職場 | 工作五年之後,對技術和業務的思考
- 對網路即服務(NaaS)技術的期待
- 是時候學習真正的 spark 技術了Spark
- SAP 業務技術平臺(BTP) Workflow(工作流)功能介紹
- 2019年全球各行業淨債務佔債務總額比例(附原資料表) 行業
- 設計「業務」與「技術」方案
- MyBatis 事務管理解析:顛覆你心中對事務的理解!MyBatis
- GSLB是什麼?談談對該技術的一點理解
- 回答在職前端的疑問:平時工作是主抓業務還是主抓技術?前端
- 某財稅集團:使用進步的技術,對業務降本提效
- 為什麼建模技術對業務分析師BA如此重要?- modernanalystNaN
- 正在興起的角色:業務技術人員
- 為什麼業務天天問技術你的技術產生什麼業務價值?可以到測試這邊為什麼天天覺得業務測試沒技術含量?
- 這是阿里技術專家對 SRE 和穩定性保障的理解阿里
- 技術管理進階——技術Leader如何拒絕業務方?
- Spring Boot 定時任務的技術選型對比Spring Boot
- 業務能力、業務功能、業務流程、業務服務及業務模型到底有什麼區別?模型
- 【新版本特性】SinoDB的業務封裝技術封裝
- ToC業務使用者彈窗的技術方案
- 做業務、做技術和打雜,你的職場現狀是哪種?
- 談談我對服務化的理解
- 技術人怎麼“打通”產品業務?
- Oracle、Mysql 專業技術服務(兼職)OracleMySql
- 對5G技術的一點理解
- 轉賬問題是屬於業務問題還是屬於技術問題?