隨著現代軟體的服務越來越複雜,開發人員要面對的商業邏輯的複雜度也跟著起飛。商業團隊的需求時常在變,而當開發人員只能照著模糊又瑣碎的需求書摸石頭過河時,專案失敗的風險跟著提升、團隊間的隔閡也跟著擴大。
事實上,一項軟體產品所需要的領域知識往往是跨團隊的,沒有任何單一團隊可以掌握它的全貌。但要如何媒合不同背景知識的人做有效溝通非常的困難。幸好在 2013 年,一位義大利人 Alberto Brandolini 發明了 Event Storming 工作坊提供了一個不錯的解決方案。
本主題分為四篇,分為 「事前準備」、「展開風暴」、**「進入軟體設計」**以及 「可以做得更好的部分」,即使沒有學過 DDD 也可以上手。同時先聲明,使用事件風暴不代表一定要採用 DDD,只要你有意想促進團隊的溝通與領域知識的理解, Event Storming 永遠都是你的選項之一!
本篇涵蓋內容:
註:在本系列中,我會用英文如 Event、Command 來指便利貼,而如果只是單純敘述事情我會用中文如事件來描述。
Event Storming 是一個透過高度互動的方式,將企業或系統的商業流程視覺化,最終協助建立軟體模型的工作坊。簡單來說就是探索功能、找出盲點、建立共識。
跑完後,與會者們都將會獲得:
整個過程中會用便利貼來視覺化流程,不會有艱深的技術詞彙或商業報表,只會有團隊學習與多元觀點的對話。實際跑起來會像是這樣:
如果你的工作流程出現以下症狀,請儘早服用 Event Storming:
使用的場景點從巨觀到微觀:
你可以照順序從 1 至 3,或是混合使用皆可。
(source: https://www.slideshare.net/ziobrando/50000-orange-stickies-later)
此外, Event Storming 也可以讓新進員工快速上手領域知識。想知道更仔細的,可以看這部 GOTO 2018 • 50.000 Orange Stickies Later • Alberto Brandolini。
一場好的 Event Storming,人事時地物缺一不可。
便利貼種類與互動模式:
(source: https://leanpub.com/introducing_eventstorming)
每種便利貼的詳細用法:
(source: https://medium.com/@springdo/a-facilitators-recipe-for-event-storming-941dcb38db0d)
當你準備好場地,大概就會長這樣子。
(source: https://leanpub.com/introducing_eventstorming)
這是最重要的元素。一場 Event Storming 會需要以下角色:
通常一場 Event Storming 有 6-8 人就可以進行一場精彩的混戰交流,至於超過 10 人以個人經驗來說,除非主持人經驗豐富,否則場面就會開始混亂起來。
你需要「非常多」的便利貼。千萬不要因為省錢就少買某個顏色,因為每個顏色都有各自的意義,無法互相替代。你會需要以下顏色的便利貼:
以上顏色皆可以自行調整,不過 Event 還是熟悉的橘色最對味。接著還有其他道具:
可以參考這張購物清單
Event Storming 超級耗費心力,可以喝杯咖啡後再上路。或是在周圍放些小點心供與會者取用。
如果你想要愛地球減少浪費,或是時間跟人都擠不出來,可以考慮使用線上版工具 Miro。
(Miro 使用示意圖)
Event Storming 是一個知識交流、打破穀倉效應 (silo effect) 的絕佳場所。同時對於團隊來說是一個非常好的「階段式學習」過程。過程中不但可以提早發現盲點,也能讓未來開發專注在核心功能上。最重要的事,他可以讓原本各自為政的團隊有機會聚在一起達成共識。從商業層面來看, Event Storming 讓我們綜覽全局來辨識出問題的癥結點,並專注在核心競爭力上;從開發層面來看,Event Storming 提供了一個有效的建構軟體方向,讓開發更有自信且減少貧血模型的使用。甚至可以將成果導入 DDD Strategic Design (DDD 剛出來時,就是因為溝通難度太高讓很多人放棄 Strategic Design 結果讓導入成效事倍功半)。
除此之外,使用 Event Storming 除了提升開會的效率,更重要的是帶來個人的成長。一名開發者的價值並不僅僅在於會用多少技術,也與工作領域的熟悉程度有高度相關。當你對於某項產業的理解越深刻,加上技術能力,你就越難被取代。甚至,你可以從技術人員升為顧問,一同參與重要的商業決策。
以下都是非常好的學習資源,每篇都值得一讀:
Modelling Reactive Systems with Event Storming and Domain-Driven Design
Detailed Agenda of a DDD Big Picture Event Storming - Part 1
Detailed Agenda of a DDD Big Picture Event Storming - Part 2
Detailed Agenda of a DDD Big Picture Event Storming - Part 3