“我開啟潘多拉的盒子” - 採訪DDD事件風暴發明者Alberto Brandolini
Alberto Brandolini是EventStorming的發明者,一種在領域驅動設計環境中的研討會格式,可讓您快速瞭解軟體領域的情況。
Alberto Brandolini是EventStorming方法的發明者 - 這一概念將領域驅動設計(DDD)背後的論文轉化為實踐。他的書“介紹EventStorming--一種刻意的集體學習行為”總結了他的基本發現。IT諮詢公司codecentric的首席顧問兼培訓師Tobias Goeschel採訪了他。
問:Eric Evans在“領域驅動設計”(2004年)這本書中提出了一種方法,從一個業務部門開始設計複雜的軟體系統,首先需要領域專家和軟體開發商的合作領域模型。他為應用程式領域設計的討論提供了設計決策和術語框架。您能否簡要解釋一下為什麼對我們行業中的應用領域的共同理解很重要?
Alberto Brandolini:領域驅動設計揭示了企業軟體開發的一個根本缺陷:
假設我們可以根據可靠明確的需求構建軟體。
其實這是一種幻覺,也是一種危險的幻覺。
雖然確實存在某些可靠明確的需求,例如:“應該可以從2.1版匯入檔案”。但是許多需求並非無可爭辯,它們包含矛盾, -具有組織中孤島現象形成的不同的觀點和需求,更不用說可能隱藏了個人目標了。Evans也將焦點轉移到語言上。即使你可能不能相信,但是確實:語言表達一個概念的術語不是唯一的。
因此,DDD致力於以需要高水平技能和軟體架構能力的方式開發軟體。這為您提供了多種選擇。此外,應該可以開發幾種非常有效的模型,每種模型都完全根據當時條件進行定製。
“隱形敵人是近年來普遍存在的”大資料中心模式“的概念。語言的基本模糊性被以資料為中心的實施所消除,迫使整個公司就”客戶“的含義達成一致。或者“訂購”意味著以及如何交換資料 - 幾年之後發現自己處於僵局:每個人都依賴相同的資料,因此任何變化風險太大,信任丟失,開發速度減慢,工作崗位失去吸引力。
問:但這些並不是新挑戰,對吧?
Brandolini:我認為整個問題已經存在了很長時間,但它只是繞著我們的耳朵飛來飛去。兩個因素是負責任的。一方面微服務:它們目前已經公佈,但它們的承諾只能透過DDD思維方式來實現,特別是在進行有界上下文分析的前提下。其次,勞動力市場:開發商越來越傾向於離開不健康的工作環境,我認為某些架構之間存在強烈的相關性,這些架構害怕破壞某些東西並且無法留住人才。
深入瞭解域域驅動的域設計可能是更集中的軟體開發方法背後的驅動力。應該理解,什麼是正確的,並建立最少妥協的軟體。它不僅感覺很好,而且還讓我想留在公司,所以我可以看到最終會發生什麼。
問: 2013年,您展示了您的研討會概念EventStorming,它將DDD理念轉化為團隊協作和輕量級建模技術。你是怎麼來的?
Brandolini: EventStorming不是一項計劃好的發明。在義大利DDD社群的一次小型聚會中,我第一次使用彩色粘滯便箋在一張紙上進行建模。我的朋友Emanuele Delbono主持了研討會並描述了他想討論的過程。然後我們分成小組。
我不得不快速放下一些基礎知識,所以我拿了一卷紙,開始使用DDD和CQRS(Command Query Responsibility Segregation)構建塊來理解我的理解,並在幾分鐘內完成。與此同時,其他隊員甚至還沒有開始。
對此重要的是環境:這不是一個業務環境,我在聰明的朋友面前。這種組合給了我最大的實驗自由:我可以跳過介紹並直接進入盒子。我們在那裡等待交換想法,並立即解決實驗中發生的缺點。
然後我開始使用這種方法 - 最初稱為基於事件的建模 - 來教授初學者DDD構建塊,而不經過傳統的定義。真正的突破來自Vaugh Vernon在魯汶和克拉科夫的IDDD巡演中邀請我作為特邀嘉賓。這不僅僅是一個演講,它是一個擁有50到70個非常棒的參與者,他們喜歡EventStorming,在他們的工作和當地社群中嘗試過它,並提供了非常有價值的反饋,想法和變化。
問:您已經將EventStorming與披薩烘焙進行了比較 - 考慮到需要解決的問題的複雜性,這似乎非常微不足道。
Brandolini:我是義大利人,我知道好披薩的製作真的很複雜。我的一個好朋友是在美食披薩業務,你肯定需要很多知識,從看似簡單的成分製作一個令人難忘的產品。
我想用披薩比喻說,合作驗證的業務敘事是一個更復雜思維的平臺。Big picture配方的變種允許不同的研討會 - 它們都有相同的基礎,但方法可能會有很大不同。
令我興奮的是,可以將所有參與者的學科中的各個元素組合成一個非常靈活和強大的工具。如果你對食譜採取正統的做法,你就會阻止大部分神奇的創造。當然,有些人會製作糟糕的食譜,但其他人會想出一個很好的食譜。
問:一個房間裡有八到十六個參與者經常第一次親自見面,所有人都有主觀觀點甚至對應用領域的偏見 - 你如何設法在這些混亂的狀態中創造一個連貫的整體畫面?
Brandolini:這是適度的任務。沒有人願意成為那個只在牆上貼上便條並將它們留在混亂的房間裡的人。所以我們可以依靠房間裡那些有興趣消除這些爛攤子的人。
更有條理的答案是:一步一步進步。
我們開始混亂地,或者更確切地說,在一個不一致的整體中與零星的統一事件叢集。然後我們嘗試引入結構。然後我們意識到我們的初始結構是天真的並且應用更復雜的方法,直到我們達到令房間裡的每個人都滿意的結果。
將混亂清理在一起是學習和團隊建設之間的過程。但它也有助於挑戰現狀:最初的混亂鼓勵批評聲音,這些聲音對那些喜歡從強制的結構開始的人來說,能聽進去不那麼容易。
連貫性不一定是我的目標。特別是在大局戰略層面,我必須想象我們對業務領域的理解的當前狀態。如果我們的業務不連貫,我必須現實地描繪它,而不是它的一些光澤版本。所有的分歧都是視覺化的,有些可以修復,但不是全部。
問:還有其他方法,如領域故事講述,主要側重於在相關各方之間建立同理心。您如何處理討論的分歧,不同緊迫感和流程的參與者的情感方面?
Brandolini:情緒是情境化的,人們總是對驚喜有好處。希望存在一個決定處理情緒的辦法,我認為這是一個壞主意。但作為主持人,我們可以處理這樣的系統:一輪混亂的解決問題和機會將給每個人提供機會,有時甚至是匿名,在不公開挑戰老闆的情況下直觀地代表異議。
我看到參與者,那些不參與的人,靜靜地要求反饋,並遵循肢體語言,看看是否出現問題。我知道一些事情,比如選擇一種非正式的語氣,以便等級和距離幾乎沒有空間,我懷疑我也在做一些無意識,讓參與者有一種安全感。
但我不得不說整件事情經常會引起一個小小的奇蹟:很難惹惱他的同事,儘管他們有侷限性,他們顯然正在盡力而為。我已經開啟潘多拉的盒子 - 但是最後的結果更多的是和解而不是爭吵。
問:較大的公司通常有一套獨特的規則可以破壞開發人員和領域專家之間的資訊自由流動,並使聯合研討會變得困難。你如何處理這樣的公司政策?
Brandolini:完全沒有。我只能看到它們的效果。通常情況下,我沒有被召入組織開始革命。有限制和規定嗎?讓它可見!讓我們看看效果。讓我們看看我們的競爭對手是否有同樣的問題,或者他們是否有完全相同的限制。一旦它們可見併成為問題的一部分,我們就可以發揮“假設”(banq: 公理法則,第一性原則)。
就個人而言,我發現限制與其最終實施之間經常存在差異。如果限制具有法律背景或限制是基於公司法規,那麼總會有一些簡單的解決方案以一種示範的方式遵守規則。
解決方案空間中有許多可以使用的可能性:散焦過程可以保持真實的規則精神,而不會陷入僵化的機制。
問:什麼問題解決了EventStorming以及如何實現這一目標?什麼時候有用?對誰有用?
Brandolini: EventStorming不適合特定問題。它是一個提供可用於更廣泛問題的配方的平臺。它解決的最明顯的問題源於多個孤島之間的合作,因為缺乏可見性,透明度和共同語言,相互指責很常見。每當需要跨部門邊界進行協作時,事件驅動的講故事和視覺化的組合就會非常有用。
相關文章
- DDD統一語言和有界上下文誤配 - Alberto Brandolini
- 事件風暴創始人Alberto:團隊拓撲和DDD上下文對映的關係事件
- DDD事件風暴的詳細議程事件
- DDD事件風暴研討會備忘單事件
- 透過事件風暴和DDD建立微服務時優先考慮事件事件微服務
- 事件風暴 vs 事件建模事件
- 可以促進微服務設計的DDD事件風暴建模技巧 - Nick Tune微服務事件
- 通過事件風暴發現業務流程 - Sarah Denayer事件
- 大局事件風暴:尋找差距事件
- “頭腦風暴”改造我們的學習——樂高頭腦風暴教授米切爾·瑞斯尼克訪談
- 採用cqrsnode框架開發的DDD CQRS例子框架
- 使用者故事/事件風暴中的功能與能力如何區分? - Killick事件
- 資料和行為與有界上下文、微服務的關係 - Alberto Brandolini微服務
- 事件風暴與領域故事的比較事件
- CSS發明者HåkonWiumLie訪談(二)CSS
- 今天開始頭腦風暴
- 採用DDD開發資訊釋出系統(四) Factory
- GitHub - mariuszgil/awesome-eventstorming: 事件風暴建模工具集GithubORM事件
- 事件風暴 - 分解問題領域的最佳實踐事件
- 關於有界上下文和微服務的關係以及它們的劃分粒度 - Alberto Brandolini微服務
- 事件風暴研討會準備和三種型別事件型別
- 事件風暴EventStorming與事件建模EventModeling的區別 | rafalmaciag事件ORMMac
- 採用DDD開發資訊釋出系統(二) Info實體類
- Win10系統怎麼禁止暴風影音開機自動啟動Win10
- 漫畫|面試風暴面試
- 採用DDD開發資訊釋出系統(五)不是想象的那樣
- 兩個技術小錯誤會毀掉一場風暴事件事件
- 獨立遊戲發行商 PLAYISM 負責人專訪:從採摘者到培育者遊戲
- 專訪 · 陰明:從前端開發到掘金 CEO前端
- 暴風魔鏡4效果怎麼樣暴風魔鏡4評測
- 頭腦風暴之面試——做個程式設計師,我容易嗎?面試程式設計師
- DDD 我的理解
- 用DDD開發開源論壇
- 安卓先鋒測試今日上線《餘燼風暴》開啟你的中世紀魔幻之旅安卓
- win10系統下暴風影音中暴風盒子載入不出來如何解決Win10
- 暴風魔鏡5釋出 暴風新一代VR手機盒子又來了VR
- 小程式搜尋,風暴之眼
- DDD中事件與命令比較事件