通用语言是什么?
通用语言是一种在特定领域内的沟通方式,可以由文字、语言、手势、图像等一切与达到沟通目的的元素组成。
比如,在中国内,方言是闽南的小王与方言是粤语的小张进行交流,那么,普通话是他们交流的主要语言,那么普通话便是他们之间的通用语言。
再比如,美国人史密夫来到了北京的一家餐馆,史密夫不会说中文,餐馆工作人员也不会说英语,史密夫和点餐人员通过在菜单上指指点点,再加上一些点头、OK手势等动作,终于完成了点餐(虽然,也是有概率会点菜点错了),那么,在菜单是指点、点头、OK手势等一系列动作,便是他们之间的通用语言。
再比如,小明和小红是两个项目组的程序员,小明画了一张系统之间交互的时序图,两就着这张时序图进行了激烈的讨论,那么,这张时序图,就是他们之间的通用语言的一部分。注意的是,这里使用了“一部分”这个词,因为除了时序图之外,他们激烈讨论过程中所用到的语言、手势(甚至打架动作)、白板都是通用语言的一部分。
再比如,A先生是北方人,B先生是南方人,A先生说马玲薯好吃,B先生说土豆好吃,到底是马玲薯好吃还是土豆好吃?如果是通用语言,会在沟通之前使两人达成共识“马玲薯==土豆”。
在一个团队中,构建出属于自己的通用语言是非常有必要的,好的通用语言,能让团队具备极高的沟通效率!
通用语言,不是天然就存在的,而是在发展的过程中,不断地完善。
在践行DDD的时候,通用语言特别重要,因为它是连通管理、业务、技术的重要工具。
通用语言的目的是为了交流,凡是有利于交流的方式,都可以称之为通用语言。
以下是一段场景,可以让你感受到如何践行DDD。
业务:我们需要的图书管理,都是通过Excel、纸质文件、借阅卡来来管理的,我们的图书,目前是以批发的形式卖给书店。目前这种方式,已经是跟不上时代的发展了,我们急需一套数字化系统来支撑我们的图书业务!
技术:我们十分赞同!给详细说一下吗?
业务:我们想打造一个线上图书馆和线上图书商城!
这时候,技术人员默认地拿出笔来记住了两个字词“线上图书馆”、“线上图书商城”!
业务:我们准备今年将线上图书馆这一块内容完成数字化,明天再将线上图书商城完成数字化!
这时候,听到“数字化”这几个高大尚的词,一些年轻的IT人员似乎不明白啥是“数字化”,于是举手提问!
领导:数字化,大白话就是为业务提供软件支持!你们以后聊到这些的名词的时候,需要将这些名词记录起来形成一个清单,方便团队中的成员交流!
领导发话了,于是业务人员在说话的时候,在使用高大尚的词语时,都刻意带上了解释,在使用只有业务才能听懂的术语时,也会将术语用大白话解释一遍。
技术:线上图书馆、线上图书商城,这听起来很抽象,请详细展开说说!
业务:线上图书馆,是将真实的图书馆动作方式搬到线上化。包含图书库存管理、图书借阅、会员管理、线上阅读、公告,这些模块功能。
业务:线上图书商城,是打造一个类似京东的、但只卖图书的商城。
技术:……,能详细展开说吗?比如,对图书库存管理更细一步展开说。
业务:图书库存管理,其中包含了图书入库、出库,入库的时候,需要追溯到图书的供应商源头,出库的时候需要跟踪到图书的具体借阅人、购买人。……省略n万字。
讨论会议,双方都觉得很满意,并约定过几天再进行一轮交流,但这次交流以技术为主导。
过了几天,技术人员拿着一些图纸与业务人员在聊,省略一万字。
以下是技术人员制作的图纸的一部分
通用语言,符合自顶向下设计的原则。
把图书领域分成线上图书馆、线上图书商城两大子域。
再细分线上图书馆,分解成库存管理、图书借阅、会员管理、线上阅读、公告。
库存管理,又进一步细分。
如此细分下去,直接细分到满意的粒度为止。
通用语言,一定是要包含在领域之中,脱离了领域的通用语言是不存在的。比如,图书领域的会员管理,与电商领域的会员管理,不是相同的。图书领域的会员具体借阅书籍的权限,电商领域的会员权拥有商品的VIP价格购买优惠。
通用语言,该如何践行呢?
仁者见仁,智者见智。践行通用语言没有标准的行动规范,需要根据自身团队的实践情况,寻找最符合自身发展的通用语言践行方式。
1、能面对而沟通,就不要视频语音沟通。能视频语音沟通,就不要文字沟通
2、沟通之前,先使双方处于同一认知水平。比如,业务方需要向研发人员描述一个需求,那么,业务人员应该将这个需求的由来说清楚,让研发人员有个大概了解。
3、重要的事情说三遍。
4、任何安排下去之后,要亲自参与实际研发过程。亲自参与,并不是与要自己动手开发,时不时询问一下开发人员的进度、看看开发的初步效果、给开发一些鼓励支持,也是亲自参与的一种践行方式。
5、制定好团队的术语表
6、制定好各种标准规范,如编码规范、设计规划