如何说服客户所有下一个项目/增强功能都应该通过TDD(使用一些敏捷实践)来完成?

时间:2009-10-21 21:06:44

标签: tdd agile

我们是一个小团队(3名开发人员),我们的主要客户之一即将向我们提交一系列新功能请求和后续项目,以估算成本和交付时间。我们与他们的最后一个项目是'成功',因为他们回到我们身边,但我知道我们可以做得更好(我们使用了瀑布......测试是经过深思熟虑的,因此单元测试代码覆盖率比我们感觉舒服的低得多,更不用说永无止境的'我们几乎已经完成'的问题。)

我刚读完“单元测试艺术”和“有效使用遗留代码”,我在工作之外的宠物项目中使用了TDD,现在我再也不能回到瀑布测试了。

我想知道的是,非开发人员有很好的“易于消化”的视频,可以清楚地显示TDD的好处以及商业意义上的敏捷实践吗?如果有任何10分钟的视频,我会非常高兴,但我也可以使用更长的视频(我会将它们引用到时间索引中)。如果没有好的视频,那么书面来源就是最好的选择。

我只想让他们加入,并对过渡感到非常兴奋。

对我而言,“只是这样做”不是一个选择,因为对于其他两位开发人员肯定会有学习曲线,毫无疑问,第一次迭代可能会有压力和颠簸,需要传达给我们客户端。

[我在下面回答了我自己提出的一些视频问题,因为我提出了一些问题......他们对我的使用并不完美,但如果没有其他人知道更好的话,我肯定是我的计划B. ]

7 个答案:

答案 0 :(得分:2)

技术债务杀死了速度。因此,我想在“完成定义”中加入“不增加技术债务”。没有这个,你就无法实现可持续的步伐。如下图所示(借鉴Henrik Kniberg的Technical Debt - How not to ignore it演示文稿):

alt text http://img27.imageshack.us/img27/329/screenshotkq.png

对我而言,所有这些都是显而易见的,你甚至可以用数字证明它(通过测量速度随时间变化)。向您的客户解释这些概念,向他解释TDD是允许控制技术债务的技术之一。然后,让他选择(或选择他)。

答案 1 :(得分:2)

如何在内部运行项目是您的业务。不要让他们参与这个决定。他们不是软件开发过程的专家。向他们询问业务需求和他们了解的事情。

听起来就是为了提高项目质量。您认为TDD的成本会更高吗?为什么要让他们相信某些事情,然后征求他们的同意?你有没有问过你可以在最后一个项目上做瀑布吗?

答案 2 :(得分:1)

为什么您的客户会注意到向TDD的过渡?压力大,凹凸不平;怎么会这样?

告诉客户为什么您要升级到TDD。我确信原因和他们一样对他们有吸引力。对我而言,TDD首先意味着对您生产的产品有更高的可靠性。

您的客户当然会记得您上次项目中的所有回归和手动测试吗?

答案 3 :(得分:1)

我不知道你的具体插图(网上到处都是文章和博客,但我不知道任何视频),但你几乎回答了自己的问题...

  

我们使用瀑布...测试是一个经过深思熟虑的结果,因此单元测试代码覆盖率明显低于我们认为的舒适度,更不用说永无止境的“我们几乎完成”问题

您只需要诚实对待您的客户。向他们解释您在上一个项目中使用的项目方法在灵活性,可维护性以及您自信地为他们提供高质量代码方面的成本。向他们解释TDD如何解决这个问题,并解释您预计由于使用新方法而导致启动较慢。

尽可能具体地向他们说明他们将获得什么,这应该是一个容易出售。但是,我会更多地从“我们正​​在计划做的事情”这个角度来看待它,而不是“我们能不能这样做吗?”角度。给他们的印象(不要不诚实),你已经计划采用这种方式,对你和你的团队的任何改变将给你和你的团队带来不便,并可能使他们的生产力降低。

答案 4 :(得分:0)

我不知道有任何视频,但向他们解释,由于原始设计不正确,在上一个项目中重新设计某个功能需要花费N个工时才开始测试;并且对于TDD,它将花费M(

另外,请解释一下,由于经过深思熟虑的测试,错误较少​​的软件的置信度将提高Y%。

然后解释你估计FIRST项目学习曲线的X小时数,并询问他们所有未来项目的给定收益是否值得,当初始时间投资折旧时。

答案 5 :(得分:0)

首先,单元测试并非敏捷方法所独有;我已经有一段时间了,已经看到它用于瀑布项目。事实上,在听说敏捷之前很久就听说过单元测试了!

害怕我不能指出任何有助于说服客户切换开发方法的视频。谷歌可能会提供帮助;如果没有视频,那么可能还有学习,博客等。

无论如何,提高客户在学习过程中接受降低生产力的机会的一个建议是以某种方式降低他的成本。例如。如果您按小时计费,则按小时计算学习时间,或者只是不为这些学习时间计费。

答案 6 :(得分:0)

我花了一些时间来问这个问题,寻找我能做的最好的视频,我遇到了一个非常接近我需要的数字。我会将它们发布在这里,以便其他人能够找到它们,如果它们与我的位置相似。

我意识到我对TDD提出了更多要求 - 但是这些视频捕获了我试图赶回家的信息的很大一部分......尤其是'为什么敏捷软件开发支付'和'Scrum在10分钟内'。 ..这是对变化做出响应,生成更高质量代码,缺陷更少,开发周期更快的过程。