通过观察和一些交流发现国内许多号称实施了敏捷开发的团队大多不是真正的敏捷。经常遇到一些令人无语的场面。比如:和他们将迭代、讲 User Story 、讲点数什么的都很好,末了大多会问那么测试该怎么写呢? …… 我认为在没掌握测试驱动开发的情况下谈论任何敏捷过程都是没有意义的。敏捷开发之所以能够敏捷其核心是代码本身是敏捷的,也就是代码本身可以快速地响应变化。编写测试不仅仅在于测试令软件修改后的正确性验证得到保证,更在于先行的测试迫使程序员做出松耦合的设计,在代码的中间插入各种隔离措施。让我们修改程序的时候不至于发生牵一发而动全身的事故。而还只是测试提升代码敏捷性的其中一个作用。 敏捷开发扬弃了早期英雄程序员的概念,但是回归到开发以程序员为主的概念。敏捷团队强调程序员的主动性,程序员应能主动花时间修改糟糕的设计。而这种主动性是建立在测试驱动的基础上的,否则在项目进度压力下除非万不得已,没有人愿意花时间冒险修改已经完成功能实现的代码,那怕这个修改看上去是那么轻而易举。而这种修改在敏捷团队中几乎是家常便饭,这些时间和风险投资的回报就是代码的敏捷性。 只有代码具有敏捷性,敏捷过程才能真正体现其价值。这些过程协调了项目各方的关系,令工作有序地进行,并且将代码的敏捷性转换成项目的收益——这才是真正的敏捷。