一切皆是为了交流-DDD通用语言

通用语言是什么?

通用语言是一种在特定领域内的沟通方式,可以由文字、语言、手势、图像等一切与达到沟通目的的元素组成。

比如,在中国内,方言是闽南的小王与方言是粤语的小张进行交流,那么,普通话是他们交流的主要语言,那么普通话便是他们之间的通用语言。

再比如,美国人史密夫来到了北京的一家餐馆,史密夫不会说中文,餐馆工作人员也不会说英语,史密夫和点餐人员通过在菜单上指指点点,再加上一些点头、OK手势等动作,终于完成了点餐(虽然,也是有概率会点菜点错了),那么,在菜单是指点、点头、OK手势等一系列动作,便是他们之间的通用语言。

再比如,小明和小红是两个项目组的程序员,小明画了一张系统之间交互的时序图,两就着这张时序图进行了激烈的讨论,那么,这张时序图,就是他们之间的通用语言的一部分。注意的是,这里使用了“一部分”这个词,因为除了时序图之外,他们激烈讨论过程中所用到的语言、手势(甚至打架动作)、白板都是通用语言的一部分。

再比如,A先生是北方人,B先生是南方人,A先生说马玲薯好吃,B先生说土豆好吃,到底是马玲薯好吃还是土豆好吃?如果是通用语言,会在沟通之前使两人达成共识“马玲薯==土豆”。

在一个团队中,构建出属于自己的通用语言是非常有必要的,好的通用语言,能让团队具备极高的沟通效率!

通用语言,不是天然就存在的,而是在发展的过程中,不断地完善。

在践行DDD的时候,通用语言特别重要,因为它是连通管理、业务、技术的重要工具。

通用语言的目的是为了交流,凡是有利于交流的方式,都可以称之为通用语言。

以下是一段场景,可以让你感受到如何践行DDD。

业务:我们需要的图书管理,都是通过Excel、纸质文件、借阅卡来来管理的,我们的图书,目前是以批发的形式卖给书店。目前这种方式,已经是跟不上时代的发展了,我们急需一套数字化系统来支撑我们的图书业务!

技术:我们十分赞同!给详细说一下吗?

业务:我们想打造一个线上图书馆和线上图书商城!

这时候,技术人员默认地拿出笔来记住了两个字词“线上图书馆”、“线上图书商城”!

业务:我们准备今年将线上图书馆这一块内容完成数字化,明天再将线上图书商城完成数字化!

这时候,听到“数字化”这几个高大尚的词,一些年轻的IT人员似乎不明白啥是“数字化”,于是举手提问!

领导:数字化,大白话就是为业务提供软件支持!你们以后聊到这些的名词的时候,需要将这些名词记录起来形成一个清单,方便团队中的成员交流!

领导发话了,于是业务人员在说话的时候,在使用高大尚的词语时,都刻意带上了解释,在使用只有业务才能听懂的术语时,也会将术语用大白话解释一遍。

技术:线上图书馆、线上图书商城,这听起来很抽象,请详细展开说说!

业务:线上图书馆,是将真实的图书馆动作方式搬到线上化。包含图书库存管理、图书借阅、会员管理、线上阅读、公告,这些模块功能。

业务:线上图书商城,是打造一个类似京东的、但只卖图书的商城。

技术:……,能详细展开说吗?比如,对图书库存管理更细一步展开说。

业务:图书库存管理,其中包含了图书入库、出库,入库的时候,需要追溯到图书的供应商源头,出库的时候需要跟踪到图书的具体借阅人、购买人。……省略n万字。

讨论会议,双方都觉得很满意,并约定过几天再进行一轮交流,但这次交流以技术为主导。

过了几天,技术人员拿着一些图纸与业务人员在聊,省略一万字。

以下是技术人员制作的图纸的一部分

通用语言,符合自顶向下设计的原则。

把图书领域分成线上图书馆、线上图书商城两大子域。

再细分线上图书馆,分解成库存管理、图书借阅、会员管理、线上阅读、公告。

库存管理,又进一步细分。

如此细分下去,直接细分到满意的粒度为止。

通用语言,一定是要包含在领域之中,脱离了领域的通用语言是不存在的。比如,图书领域的会员管理,与电商领域的会员管理,不是相同的。图书领域的会员具体借阅书籍的权限,电商领域的会员权拥有商品的VIP价格购买优惠。

通用语言,该如何践行呢?

仁者见仁,智者见智。践行通用语言没有标准的行动规范,需要根据自身团队的实践情况,寻找最符合自身发展的通用语言践行方式。

1、能面对而沟通,就不要视频语音沟通。能视频语音沟通,就不要文字沟通

2、沟通之前,先使双方处于同一认知水平。比如,业务方需要向研发人员描述一个需求,那么,业务人员应该将这个需求的由来说清楚,让研发人员有个大概了解。

3、重要的事情说三遍。

4、任何安排下去之后,要亲自参与实际研发过程。亲自参与,并不是与要自己动手开发,时不时询问一下开发人员的进度、看看开发的初步效果、给开发一些鼓励支持,也是亲自参与的一种践行方式。

5、制定好团队的术语表

6、制定好各种标准规范,如编码规范、设计规划

相关推荐

  1. Python:一切对象!

    2024-04-08 17:46:03       32 阅读
  2. 一切文件有必要单独提出来说

    2024-04-08 17:46:03       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-08 17:46:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-08 17:46:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-08 17:46:03       82 阅读
  4. Python语言-面向对象

    2024-04-08 17:46:03       91 阅读

热门阅读

  1. MySQL的XID

    2024-04-08 17:46:03       39 阅读
  2. QT6 Android设置程序图标及名称

    2024-04-08 17:46:03       36 阅读
  3. extern “C“的作用

    2024-04-08 17:46:03       33 阅读
  4. js有哪些常用的跳转页面方法(补)

    2024-04-08 17:46:03       30 阅读
  5. 2024.4.8每日一题

    2024-04-08 17:46:03       40 阅读
  6. go 使用pprof查看内存分布

    2024-04-08 17:46:03       38 阅读
  7. PostgreSQL的|| 和::

    2024-04-08 17:46:03       38 阅读
  8. python实现两个二维数组相加

    2024-04-08 17:46:03       33 阅读
  9. 【Python】RocketMQ 基础使用

    2024-04-08 17:46:03       26 阅读