美文网首页程序员微服务架构和实践
DoD的价值:你完成了工作,为什么他们还不满意?

DoD的价值:你完成了工作,为什么他们还不满意?

作者: 十年开发程序员 | 来源:发表于2019-01-22 14:28 被阅读38次
image.png

开始今天的讨论之前,我们先来看一个小故事。小李是一个程序员,有一天,项目经理老张来到他身边,和他商量一个功能特性的进度:

DoD的价值:你完成了工作,为什么他们还不满意?
两天以后,老张又来到小李的身边验收工作:

DoD的价值:你完成了工作,为什么他们还不满意?
很明显,老张有些愤怒,而小李也有些委屈。于是,老张、小李和测试人员一起度过了一个不眠之夜。

听完这个故事,你有什么感想呢?先不急,我们继续看后面的故事。

又过了几天,老张又来找小李,给小李安排一个很简单的功能。在小李看来,一天就能搞定,而按照老张给出的时间表,小李有两天时间处理这个功能。小李心中暗喜:看来我可以“偷得浮生一日闲”了。

两天以后,老张又来检查工作。

DoD的价值:你完成了工作,为什么他们还不满意?
小李熟练地演示了这个新写好的功能,这次老张很满意:

DoD的价值:你完成了工作,为什么他们还不满意?
怎么会这样?小李心里很委屈,自己明明已经很好地完成了工作,老张是不是故意在找自己的麻烦呢?

好,故事讲完了。是不是有些似曾相识的感觉呢?为什么小李辛辛苦苦地工作,老张却总能挑出毛病来呢?老张是不是来挑刺的呢?其实,老张才没那么闲,小李的委屈主要是因为他和老张对于“完成”有着不一样的理解。换句话说,他们之间存在一个理解的鸿沟。

理解的鸿沟

在这个模块里,我们讨论的主题是“以终为始”。那我们第一个问题就是,“终”到底是什么?在前面这个例子里,“终”就是“完成”,可是,小李认为他的活已经做完了,老张却认为他没做完。

怎么会这样?二人之所以有分歧,归根结底,就在于二人对“完成”的定义理解的不同。

在第一个故事里,作为项目经理,老张认为“完成”应该是“上线运行”,而程序员小李则认为“完成”是“功能代码编写完毕”。这中间存在的理解偏差,包括了测试人员的测试工作,可能还包括了运维人员的上线工作。

在第二个故事里,老张给了小李两天时间。小李认为这两天都是编写功能代码的,而老张想的是,小李应该自己写好功能代码和单元测试,可能还包括了功能测试,这中间的差异是测试代码的工作量。

因为双方的理解不一致,所以无论怎样努力,小李都不可能达成项目经理老张的要求,正所谓“南辕北辙”。

那该怎么办呢?小李会说,我又不是老张肚子里的蛔虫,怎么才能和他达成一致呢?答案很简单,既然双方的理解有差异,那就把这个差异弥合上,后面的问题便也不是问题了。

弥合差异的方式有很多,有一个最佳实践,它的名字叫 DoD(Definition of Done,完成的定义),从这个概念的名字便不难看出,它就是为了解决软件开发中常见的“完成”问题而生的。

完成的定义

DoD 这个概念本身并不复杂,它就是告诉我们怎样算是完成了,尽量减少因为理解偏差造成的各种浪费。具体怎么做呢?就是团队在开始工作前,先制定 DoD。以前面的场景为例,团队可以规定:

DoD的价值:你完成了工作,为什么他们还不满意?
大家都是聪明人,一旦 DoD 确定好了,谁该做什么事就一目了然了。这个时候,如果小李说“我已经开发完了”,却只是写好了功能代码,那就别怪老张手下无情了。

好了,你已经知道 DoD 是什么了,它简单到让人一目了然,相信你很快就能知道该怎样把它用到你的工作里。不过,我们不仅要知道怎么用,还要知道怎样让 DoD 更好地发挥作用。

在前面的讨论中,我们所说的 DoD 只是从个人层面入手。在团队层面,我们也可以定义 DoD。

某个功能的 DoD,比如:这个功能特性已经开发完成,经过产品负责人的验收,处于一个可部署的状态。
一个迭代的 DoD,比如:这个迭代规划的所有功能已经完成。
一次发布的 DoD,比如:整个软件处于可发布的状态,上线计划已经明确。
站在 DoD 的肩膀上

至此,我们只是从软件开发团队内部协作的角度来谈 DoD。但实际上,它不仅局限在团队内部协作上,如果你可以放开思路,会发现 DoD 的思维在工作中用途非常广泛。比如,当我们需要和其他团队合作开发一个接口时,我们都知道第一步就是要把接口定义下来。

那么,怎样才算定义完成?很多团队认为落在字面上就够了。但是有了 DoD 的思维,我们定义接口,就会去明确定义可检查的检查项。那么在定义接口这件事上,什么才是“可检查”的呢?我们可以参照一个可运行的接口来进行评估。只要检查:

服务方提供的接口是不是和这个可运行的接口返回值是一样的;
调用方是否可以和这个可运行的接口配合使用。
谁错了,谁改去。你可能会问,应该参照哪些可运行的接口呢?这不难解决,现在模拟服务器的框架到处都是。如果你不介意的话,我的 就是这样一个开源项目,你可以看一下。

在协作中一旦确立好 DoD,我们甚至可以通过流程把它固化下来,从而更高效高质地完成工作。当然,我们在工作生活中难免会有一些临时的工作,它们没有复杂到需要一个流程,但是也可以用 DoD 思维来高效地解决。比如:

DoD的价值:你完成了工作,为什么他们还不满意?
DoD 是一个的思维模式,是一种尽可能消除不确定性,达成共识的方式。我们本着“以终为始”的方式做事情,DoD 让我们能够在一开始就把“终”清晰地定义出来。

人与人协作中,经常会出现各种问题,根本原因就是,有太多因为理解差异造成的误解,进而浪费了大量的时间,而 DoD 就是一种将容易产生歧义的理念落到实处的方法。

总结时刻

好,我们来总结一下今天学到的内容。首先,你应该知道,人与人协作,总会有这样或那样的理解差异。开始协作之前,我们最好先同步一下彼此的理解,确保之后不会因为理解不一致,而让协作方措手不及。

怎样解决大家的理解偏差呢,我介绍了 DoD(完成的定义),它是行业中的一种最佳实践,能够在团队内部很好地同步大家对“完成”的理解。好的 DoD 是一个可以检查的清单,可以确保你不遗漏任何事情。

如果深入领会 DoD,你会发现 DoD 可以灵活应用在不同的协作场景中。比如应用于个人工作、团队工作,甚至跨团队工作。当然,你也可以将它灵活地运用于各种生活场景,弥合人与人理解之间的差异,更好地协作与沟通。

如果今天的内容你只能记住一件事,那请记住:在做任何事之前,先定义完成的标准。

最后,我想请你回想一下,你在工作或生活中,是否发生过因为双方理解差异导致的问题或不快呢?有了 DoD 的概念以后,你是不是有了一些新的想法呢?欢迎在留言区留言。

感谢阅读,如果你觉得这篇文章对你有帮助的话,也欢迎把它分享给你的朋友。


广告.jpg
QQ图片20190118144713.jpg

相关文章

  • DoD的价值:你完成了工作,为什么他们还不满意?

    开始今天的讨论之前,我们先来看一个小故事。小李是一个程序员,有一天,项目经理老张来到他身边,和他商量一个功能特性的...

  • DoD的价值:你完成了工作,为什么他们还不满意?

    开始今天的讨论之前,我们先来看一个小故事。小李是一个程序员,有一天,项目经理老张来到他身边,和他商量一个功能特性的...

  • DoD 原则是什么?

    DoD,敏捷开发中,常用“Definition of Done”来表示工作是否已完成。所有的DoD随着时间的推移、...

  • 对于高效工作的一些思考

    减少返工,就是最大的效率 为什么你的努力也许会白费? 为什么你完成了工作,别人还是不满意? 你交付的是代码,还是一...

  • 止不住地困惑,解不了的忧愁

    2018-03-05 13:13 你对现在的工作这么不满意,为什么还不从现在的公司辞职呢? 因为你怕。 你害怕现在...

  • DoD的价值(define of done)

    工作中,你是否会遇到你认为自己弄完了,但别人却认为你没有做完。 比如说某项功能的开发,你通过代码已经把功能实现,并...

  • 在非软件行业(任务)定义DoD

    DoD 完成的定义( Definition Of Done) 在Scrum中, 为产品增加可验证/演示价值的交付物...

  • 谈谈你现在的工作令你满意吗? 为什么?

    本周沙龙题目 你现在的工作令你满意吗?为什么? 话题解析 建议回答这个问题,如果是满意,那满意的点在哪呢?结合工作...

  • 2018-10-25

    为什么,为什么一次次的这样对我,为什么是我,还不够吗,还不够吗,我怎么样你才能满意?我还的还不够吗?我一次次的用心...

  • 今非昔昨(二十九)

    任父任母在见完莫小然后,觉得儿子的眼光还不错,小然这孩子他们看得上。他们对这个未来儿媳妇也还比较满意,虽然平时在他...

网友评论

    本文标题:DoD的价值:你完成了工作,为什么他们还不满意?

    本文链接:https://www.haomeiwen.com/subject/wibljqtx.html