DDD游擊隊 - yannick grenzinger
2018年6月26日,我很幸運地被DDD巴黎團隊邀請與一些DDD明星同臺演講,如Mathias Verraes,Yves Reynhout和Eric Evans,他是設計驅動設計書籍的作者。這次所有的會議都很棒。
最後的討論小組對DDD和我們作為開發人員的工作充滿洞察力。我強烈建議花些時間去看他們(這裡的影片),這隻有20分鐘,像我這樣的法語演示用英文字幕!
在我的演講中,我談到了“Guerrilla DDD”。這個術語來自我團隊的Scrum回顧展中的討論,並受到UX領域的啟發,設計師面臨著無法正常工作的困難,開始談論游擊隊或“如何破解組織工作” “(見本書)。
為什麼使用領域驅動設計?
這個詞是埃裡克埃文斯在他的同名書中創造的。
使用維基百科的優秀定義是:
DDD的最大優點之一是它促使開發人員(以及整個IT團隊)持續改進他們的工作方式。
透過將自己融入思維模式,他們將花時間真正瞭解他們正在研究的領域(即業務)。他們將在程式碼中明確且清晰地預測(作為建模)業務領域,使其幾乎可被業務人員閱讀。
事實上,是的,對於那些還沒有這種心態的開發人員來說,這是DDD的最大優勢。在您發現許多軟體開發環境的嚴酷現實之前:
我們稱之為業務人員,即業務分析師或產品所有者,並不真正掌握他們被分配到的領域相關知識。
在遺留軟體環境中非常明顯。很多時候,他們真的不知道如何在這些凌亂的程式碼中實現業務規則。當他們發生可怕的“我們將檢視文件”時,你知道你將有一個漫長而艱難的旅程。當然,我們談論的是“遺留”應用程式,因此沒有BDD或DDD實踐來幫助我們重新建立業務知識。
在其他情況下,他們真正掌握的是業務在遺留舊應用程式中的預測。他們就是Alberto Brandolini所說的Dungeon Master,“他的專業知識是從現有系統的複雜性中建立起來的”。
這種情況的最大問題是遺留的、舊的預測很少代表真正的業務領域。
在某些時候,業務領域將自己與一個糟糕的應用程式對齊,我稱之為功能性債務,這比技術債務更糟糕。
此外,這並不是因為這些人不夠聰明,而是因為有許多心理偏見推動這個方向,如“ 達克效應(無知的人總是自以為聰明) ”或大多數“ WYSIATI 所見即所有 ”。
收回控制權
我將給出一個真實的例子來更好地理解問題是什麼,如何重新獲得控制並將真正的業務領域放回產品和程式碼中。
我們的團隊正在重新設計國際投資銀行的舊應用程式。該領域主要是複雜融資請求的審批流程。審批流程需要支援不同使用者的分析和決策。
第一個重要功能是建立一個任務管理系統(想想待辦事項列表),以幫助他們檢視要處理或跟進的請求。此任務管理主要是為了表明團隊可以快速為舊應用程式周圍的使用者帶來價值。我們必須檢索舊遺留資料庫中的請求和決定,這是真正的主要來源。
為此,有兩種情況:使用者要麼是主動加入團隊,要麼被團隊邀請。對於後者,我們發現了令人不安的事情:一些使用者被要求分配到多個團隊......最多10個......使得任務管理系統對這些使用者幾乎無用。
在這一點上,大多數開發人員將接受這個事實並實現這一需求,而不是眨眼:(
當然,業務要求我們這樣做!他們還將繼續新增變通方法和怪癖,以使整個事情可用,但同時,迅速增加程式碼庫的意外複雜性。
在這一點上,DDD經歷了真理的考驗。為了兌現DDD的承諾,你必須說“不”並推動組織改變。
首先,盡一切可能看到真正的使用者。
在我們的案例中,花一個小時與應用程式的使用者進行討論是一次神奇的體驗,因為他解釋了為什麼許多使用者被分配到多個團隊。
在他們的日常活動中,每個團隊都是一組使用者,每個團隊主要代表一個部門。在遺留應用程式的生命週期開始時,建立了新的一組團隊,每個新團隊都與原來特定部門相關聯。
然而,修改團隊是如此困難,以至於每次使用者需要關注新的法律實體或者公司在團隊之間重新分配時(因為內部重組),選擇將使用者新增到另一個團隊。也許程式碼庫已經不夠靈活,或者企業不想投資這種能力。
最後應該是簡單的,如下圖所示:
實際上是這樣:
我們發現的是以前提出的功能性債務的概念。
在開發團隊中,我們強烈反對這一點,業務代表正在努力保留遺留應用程式中實現的內容,主要是因為他們已經習慣了它並且他們害怕創造新的東西。
我們不得不多次解釋功能性債務使專案處於危險之中,意外的複雜性,潛在的錯誤和可用性問題。
幸運的是,開發團隊足夠強大,能夠讓每個人都瞭解在應用程式中設計團隊的必要性,以及業務團隊日常工作的方式。
最後,我們建立的設計現在接近於此:簡單且更好地將業務投影到程式碼中。
游擊隊開發團隊最終獲勝,並有其快樂的結局故事。
結論
在某些情況下,要真正做DDD,您將不得不在遺留應用程式中分解原來組織結構,錯誤的組織結構對業務的錯誤投射影響,您將不得不進入游擊隊方式去改變它們。
相關文章
- COMMANDOS LIKE的突破與掙扎——《蘇軍游擊隊1941》
- DDD、Wardley對映和團隊拓撲
- 我們團隊是如何落地DDD的(1)
- 保衛東部前線,即時戰略遊戲《游擊隊1941》將於10月14日在PC上釋出遊戲
- DevOps 團隊如何防禦 API 攻擊devAPI
- 游標美化
- DDD與團隊拓撲以及微服務之間的關係圖 - aleixmorgadas微服務
- ddd
- Notes Twenty-fourth days-滲透攻擊-紅隊-紅隊自研
- input 獲取游標位置與設定游標位置
- DDD悖論:DDD是不是銀彈?
- 取沙子游戲
- ddd-crew/ddd-starter-modelling-process:DDD設計入門建模流程
- Vim游標移動
- DDD隨談
- DDD與Repository
- 淺析 DDD
- 領域驅動設計的DDD與ddd - nick
- 2022年DDD新書推薦:領域驅動設計+Wardley對映+團隊拓撲新書
- css 滑鼠游標設定CSS
- 【Swing】JTextField設定游標
- (12)mysql 中的游標MySql
- 阻止游標預設事件事件
- cad游標大小怎麼調 cad游標中心正方形大小設定
- win10游標怎麼縮放_win10游標縮放方法Win10
- 真正的敏捷是根據DDD有界上下文劃分其團隊組織結構 - allenholub敏捷
- 事件風暴創始人Alberto:團隊拓撲和DDD上下文對映的關係事件
- 當SOA遇到DDD
- 談一談 DDD
- DDD文章推薦
- DDD實踐反思
- 使用DDD澄清MVVMMVVM
- DDD之1微服務設計為什麼選擇DDD微服務
- 實施DDD的幽默:DDD落地需要專門的框架嗎?框架
- 使用DDD等方法實現社會技術架構和團隊管理:你的經理還用拍腦袋劃分團隊嗎? - Nick Tune架構
- SAGI GAMES曾嶸:《Genius Shooter》,小團隊如何搏擊北美市場GAM
- win10如何換滑鼠游標 win10更換滑鼠游標怎麼操作Win10
- 架構-初識DDD架構