第二个冲突,是敏捷和大型预先设计在流程和期望产出(即人们常说的架构)上的差异。敏捷方法的主要目标之一是周期性少量地提供客户价值,这关乎快速行动、接收反馈、拥抱变化。而大型预先设计的目标是在蓝图(通常是一个计划)到位前,对全部事情达成共识。
敏捷宣言 1 更推崇“随机应变”而非“依计划行事”,但这显然不意味着不做任何计划,似乎有些敏捷团队害怕做任何一点“分析”。结果为了避免大型预先设计,敏捷团队常常不做任何预先设计,而是用“浮现式设计”或“演化架构”之类的术语来为他们的做法辩解。我还听说有团队宣称他们采用的测试驱动开发(TDD,Test Driven Development)根本不需要“架构”,但也就是这些团队在将来某个时候会为不断重构所累。
1 http://agilemanifesto.org