在2016年年初舉行的領域驅動設計歐洲大會上,Cyrille Martraire在演講中分享了他在DDD驅動的環境中與領域專家共事的經驗。他指出,在領域驅動設計中,與領域專家對話及所使用的語言是關鍵,這通常會因為所說的語言不同而出現困難。
Martraire是“巴黎軟件工藝社區(Paris Software Craftsmanship Community)”的創始人,同時也是arolla的聯合創始人。他指出,要想與領域專家成功地對話,首先需要自學一些領域知識。做好功課,提前準備一些知識,例如讀書或在互聯網上查找信息。
在Martraire看來,展示一些領域知識是一種和專家建立信任及改善溝通的方式。以下是三種簡單的方式:
顯得你真的很好奇,并展示你的知識; 提出更好的問題,并隨著對話進行改進它們; 挑戰,但要恭敬。Martraire指出密切注意詞匯避免轉換或其他曲解的重要性。他特別提到,積極聆聽非常困難,所以他創建了一種他稱之為Word Safari的技術,從中他可以標記出所有出自領域專家之口的新詞。然后,他就可以檢查下它們是新概念還是同義詞。他強調,這不僅僅是一個簡單的技巧——注意DDD中使用的語言至關重要。
Martraire發現,“引導對話(navigating the conversation)”是一項實用的技術。你可以將對話向上引導,引向一個更抽象的層次,總結并發現意圖。這里的關鍵問題是“為什么”,通常要問多次。你還可以將對話向下引導,引向更具體的細節,這時,示例成了發現誤解的一個重要手段。使用示例的一種方式是使用行為驅動開發(BDD)和專家一起描述具體的行為示例。第三種引導對話的方法是偏離對話主線,拓寬領域。有時候,這可以揭示出根本就沒討論到的環節。
讓領域專家清楚地認識到,與你對話很安全,你沒有計劃竊取他們的工作,Martraire認為這是一條特別重要的原則。這樣做的一個結果是你什么東西都要求驗證;最終,你和領域專家就領域達成共識。
這一切看上去很美好,也很簡單,但根據Martraire的經驗,有時候很難找到一位優秀的領域專家。他指出:
最差的領域專家是那些專業知識來自錯綜復雜的現有系統的專家。
同時,他還指出,他的經驗可能有點片面,因為他通常是根據DDD潛力以及相關人員的整體心態選擇項目。
明年的領域驅動設計歐洲大會將于2017年1月底舉行。
查看英文原文:Working with Domain Experts in a DDD World