向团队销售TDD
过去3年我一直在做TDD。我们是一家小公司,我们对管理层的敏捷过程的大部分方面提供了非常坚实的支持。开发团队中的每个人都在这个过程中出售。因此,他们通常需要制造固定装置的前期投资才能被接受,因为他们知道这将会带来回报。 (启动http服务器的代码,在测试之前填充sql数据库的代码等)。文档主要发生在测试中,帮助请求通常以失败的测试形式呈现。向团队销售TDD
现在我搬到了一家更大的公司,虽然管理层支持敏捷过程,但是队友是一个混合包,有些人认为它很有用,有些人是因为管理而做的,有些没有看到值。要说服人们花时间建设灯具或说服团队成员最好的方式来帮助他,这是一个挑战,如果他花时间写出失败的测试。
那么您认为将TDD卖给犹豫不决的队友的最好方法是什么?反对意见通常是:'这是一个不必要的成本','我们总是可以在事实上写出重要部分的测试','这是一个热门词汇,团队把它捡起来,然后随着重磨开始落到一边'等。
你不能 “卖TDD的犹豫队友的最好方式”。不要浪费时间“销售”。
相反,投入时间“证明”。
只要做到这一点。成功的。当人们问你的成功秘诀是什么时,然后揭示TDD。之前没有。
这也不错。有些人你不能说服。 – hvgotcodes 2010-07-23 17:16:10
行动说话比话语响亮得多。这绝对是怀疑者需要被示范说服的情况。 – DOK 2010-07-23 17:16:19
我可以尝试一下,继续在共享代码上工作会很痛苦,而回到这就像访问一个外国... – shipmaster 2010-07-23 17:57:40
简单 - 可维护性。 TDD使您能够进行更改,并查看这些更改影响其余代码的位置。代码基数越大,就越有必要进行测试来验证任何新的更改。
正确性。虽然测试本身可能会被破坏,但最终他们会达到确保组件正在按照预期做的事情。开发者越好,速度就越快。
另一个优点是TDD通知系统中组件的设计。如果你试图测试某些东西,而且测试过于复杂,这可能意味着你需要将问题分解成更小的部分...
将它卖给人们,你说从长远来看它使得增加更便宜的新功能,并降低打破现有功能的风险。所以它降低了成本。
那么以上所有内容都是关于做测试的好处,而不是先用测试作为编码的一种方式。我的团队已经得到了他们为什么需要用测试覆盖代码(至少是显着部分)的原因。 – shipmaster 2010-07-23 17:59:38
是的,但你可以卖出好处。 – hvgotcodes 2010-07-23 20:20:02
我认为Joel's post很好地解释了为什么测试是一件好事™。
我不认为他曾经使用“TDD”一词,但它有一些很好的信息。
测试与tdd不一样。每个人都会同意测试的重要性。 tdd的发展理念是另一回事,尽管op假设它必定是一个真正的道路。 – frankc 2010-07-23 17:51:59
我绝对同意。然而,从我所了解的TDD中,Joel的帖子接近(渐近地)TDD – 2010-07-23 18:21:18
@ user275455的一个论点:它不一定是唯一真实的方式,它仅仅在我的情况下(并且在我看来)比hodge更有效率目前存在于我的环境中的小鸟。 – shipmaster 2010-07-23 21:31:43
对于犹豫的队友,耐心等待机会,然后扑面而来。在软件开发中,TDD预防或减轻问题无疑是一个问题。请留意这样的机会。与他/她一起创建一个本来应该从一开始就开发的测试。但是,请确保您以这种方式制作您的信息,以免让您的队友难堪。
我同意S. Lott,你不能“出售”他们,你需要显示的价值。
最有效的方法之一是配对编程。假设你有另一个“卖”问题,说服人们配对是一种有效的方法,但是过了一段时间你可能会说服/转换开发者。
对于我来说,TDD对我来说是一个艰难的概念,但现在我无法用其他方式编程。
重复其中很多这些:http://stackoverflow.com/search?q=tdd+roi – 2010-07-23 17:24:05
你已经触及了自从我开始团队工作以来一直困扰着我的东西。为什么我们有时需要向开发者推销良好实践?当然,他们从来没有得到他们糟糕,浪费的习惯的许可。 – 2010-07-23 17:34:00
[如何鼓励实施TDD?](http://stackoverflow.com/questions/428691/how-to-encourage-implementation-of-tdd)和其他许多方面可能存在重复。 – 2010-07-24 22:49:00