如何定义开发完成?(Definition of Done)

最近在拜读晔的10x程序员工做法,收益良多,文中提出一个概念叫DoD(Definition of Done)给个人感触颇深。这让我联想到实际工做过程当中,常常遇到的扯皮、争吵等各类场景,其实就和这个DoD分不开。程序员

1、场景描述

  郑晔在文中描述了这样一种现象,相信有开发经历的人多少有同感:单元测试

老张:这有一个任务须要完成,你看一下。
小李:这个不难,两天就能作完,两天之后就能上线。

  两天之后,老张又来到小李的身边验收工做:测试

老张:怎么样,作完了吗?今天能上线吗?
小李:个人代码写完了。
老张:测试人员测过了吗?
小李:尚未。
老张:那今天能测完吗?
小李:那我就不知道了。
老张:什么?我但是答应了业务的人,今天必定要上线的!

  两天之后,老张又来检查工做。编码

老张:这个功能开发完了吗?
小李:写完了,你看我给你演示一下。

  小李熟练地演示了这个新写好的功能,此次老张很满意:spa

老张:作得不错。单元测试都写了吧?
小李:啊?还要写单元测试吗?
老张:要不为啥给你两天的时间?

  很明显,老张有些愤怒,貌似总在挑刺,而小李也没有偷懒、有些委屈。因而,老张、小李和测试人员一块儿度过了一个不眠之夜。设计

2、理解的代沟

  根据上面的场景,我画了两幅小李和老张的思考图,看下二者的代沟在哪儿,以下图所示。代码规范

  很显然二者对完成的定义各不相同。对开发人员小李来讲,完成容易理解为编码完成;而不去考虑代码测试和线上测试;对技术主管老张来讲,完成的理解可能会更多一些,包括编码,测试,代码规范,审查,上线等等,有些老张脑子里的东西更多,好比下图所示:对象

  为何会有上面的差别?从立场来看,小李汇报的对象只有老张,而老张要协做的对象可能有产品经理、老板、总监、小李们。小李是从我的层面,关注的是一个点,老张是从团队层面,关注的是一个面。blog

  各自定义差可能反应了一个信号,就是团队成员总体上缺少职业素养,那么这个团队就危险了。从小李的角度不管怎么努力,都不可能知足老张的需求,从老张的角度总以为小李偷懒,致使团队之间总是摩擦、挑刺,最后小李干的不爽了,老张也以为小李孺子不可教,最后事没有作好,人跑了。接口

  接下来就要回到做者提出的DoD概念(完成的定义),从这个概念的名字便不难看出,它就是为了解决软件开发中常见的“完成”问题而生的。

3、完成的定义

  这里的DoD在郑晔看来包含三个层次的含义:

  • DoD 是一个清单,清单是由一个个的检查项组成的。
  • DoD 的检查项应该是实际可检查的。
  • DoD 是团队成员间彼此汇报的一种机制。

  借助这三个含义,我模拟登陆功能列了表格:

 

  以上是站在测试用例的角度来写,一个简单的登陆就能够包含18个开发功能点,作好登陆并无那么简单,这也就难怪小李和老张老是意见不一致。若是摊开这份清单用来验收登陆功能的完整性,我相信小李和老张彼此都不会有什么意见。

  可是这里有一个问题,就是老张根本不会去作这份清单!小李也没有这种意识,那谁来拟定?也许你会说引入中间层,就是测试人员来拟定,假设大家团队没有测试人员呢?

  事情老是没有表面看起来的那么简单。这里再设计一份简化的验收清单

 

  如此简化的功能也能多少避免小李和老张的鸿沟了吧?那么又回到前面的问题,谁来制做这份清单?

  我我的的意见是小李来作,由于小李的势能没有老张高,那就多增长本身的动能了,显示本身作事的能力,同时也作一个同事眼中的好伙伴,领导眼中的好同事。等小李变成老李了,遇到小张也是小张来作这事。

4、DoD是一种思惟方式

  郑晔在最后又补充道:

至此,咱们只是从软件开发团队内部协做的角度来谈 DoD。但实际上,它不只局限在团队内部协做上,若是你能够放开思路,会发现 DoD 的思惟在工做中用途很是普遍。好比,当咱们须要和其余团队合做开发一个接口时,咱们都知道第一步就是要把接口定义下来。

  这里的DoD看起来很完美,定义了验收清单,罗列了一系列验收项目,并固化成文档。可是,过程当中有几个焦油坑须要去思考:

  • 如何才能符合“可验收”?
  • 彼此都没法想到的风险如何管理?

  也许这须要团队的磨合了,从老张角度若是这事不会死人,其实没有必要去咄咄逼人,大不了后续进行迭代改进,不然逼得紧其实只会引发反弹,养成小李习惯性的逃避责任,造成团队推卸责任的文化就得不偿失了。

  当咱们有了DoD的思惟方式,后面的事情也许会变得简单不少,郑晔举了个小例子让人折服:

1.常常会有人过来,让我帮忙作些事。运用 DoD 的思惟,我首先会问他我具体要作哪些事,确认好细节(至关于定义好“检查项”),而后我就知道,这个忙我能帮到什么程度。
2.我请别人帮忙的时候,也会很清楚告诉他,哪些事是须要他作的,尽可能减小没必要要的误解。

5、总结

  人与人的协做,总会存在理解上的误差,如何去解决信息不一样步的问题呢?DoD是一种最佳实践,它是包含了检查项的验收清单,而如何作到“可检查”须要双方重点沟通。DoD从大了看是一种思惟模式,是一种尽量消除不肯定性,达成共识的方式。

借用郑晔的一句话:“若是今天的内容你只能记住一件事,那请记住:在作任何事以前,先定义完成的标准。”

相关文章
相关标签/搜索