在 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 月底举行。
评论