写不写文档?
敏捷宣言更强调“可以工作的软件胜过面面俱到的文档”,但并不是说不需要文档。敏捷的目的是尽量减少浪费,所以采取了极端的逻辑,把所有的文档都视为浪费。但并不意味着文档可以被完全抛弃掉。文档对于团队信息传递来说是很有用的(特别是扩展规模时,或者团队不稳定时)。
要理解敏捷开发的出发点不是不写文档只写代码,而是减少浪费,以便能按照自己项目的特点,灵活选择文档的数量,在过度设计和返工之间找到平衡。过度设计和返工是造成浪费的主因,不同类型项目中两者比重不同。
大型项目尤其是系统工程级别的项目,比如军工、航空、大型通信设备项目,设计的工作量很大,原因是这种投入毕竟是可控的;而一旦由于设计不充分,导致严重的返工,则往往不是简单的费用问题,可能造成项目被终止。
因而在这类项目推广敏捷,应该适当增加文档的数量,以便长期项目能够按计划完成。
在互联网、消费电子行业则正好相反,返工主要是由于业务变化而不是错误或不足的设计引起的;相反过度设计往往在未被付诸实现之前就已经过时,反而形成浪费。
因此在此类项目推广敏捷,应当适当降低文档的数量,以便在业务变化时轻装上阵,而不需要同步修改大量设计文档。但也并非完全不需要,可以根据项目过程定义裁剪。