Domain Distilled
Saturday, September 27th, 2008DDD Charpter 15 講述 Distilled Domain, 入面既野有大部份都以前讀果科 Outsourcing 既理念差唔多, 都係講 Core Competence.
Core Competence 係指企業核心能力, 亦都係企業不可代替既競爭力, 等同於 Sony 既電子細小化技術, Mac 既圖象技術一樣, 每間公司能夠待續成長就要有一個 Core Competence!! 而 Distilled Domain 就係個 Core, 經多次程式員同 Domain Expert 討論及詳細理解過後既精華所在, 但如果一個 Core Domain 得不到質量管理, 最後都係發揮唔到佢競爭優勢.
Domain-Driven, 因為要解決既問題多數係 Domain Problem, 所以如果 Software Developer 未能理解該 Domain, 其實對軟件既質素長遠都有影響. 而當一個不良既設計存在於一個運行緊既系統內, 作為 Software Developer 係咪真係可以說服到管理層 (通常係 Project Manager) 去追求質素而去面對一個有可能存在既風險呢?
因為自己對軟件設計有追求及自己不段既進步, 面對住以前寫過既部份質素無咁好既設計(或者係 Code)因為已經運行當中而無法提高品質, 可以做既就係在一個新既系統未設計之前, 盡量去理解 Domain Problem 同 Business Needs 而去做一個精練既設計, 加上軟件架構同良好既編程習慣, 令跟隨者能易於管理及因需要而重構, 自己又能隨著經驗增加而設計出更高質素既 Domain 及周邊工具, 咁先可以有較地提高生產力.
一個好既 Domain Design 亦都好需要一個良好既 Utility 支持, 等同於 Core Competence 入面, 除左 Core 之外, Non-Core 但 Essential 係避免 Outsource 一樣, Utility 亦十分重要, 亦需要得到內部廣泛使用及質量管理 (e.g. Test-Driven Design), 不會抄襲而注重重用, 咁先可以真真正正提高效率, 質素及生產力, 呢幾個理念亦係我對軟件設計既堅持.
