敏捷项目怎么写文档
很多团队在接触敏捷开发的时候,对敏捷宣言提倡的“可工作的软件而不是全面的文档”有所偏差,就会简单粗暴的抛弃文档甚至给出文档无用论,极力推行“SCRUM软件开发人员应该只需要专注交付可工作的软件,编写最容易理解的代码”。这种做法是对敏捷宣言的一种极端理解,否定了项目文档在实际工作中的价值,也忽略了通过文档来解决问题的可能性。
在敏捷项目中,文档的价值不是通过数量或者是模板规范来体现它的价值。敏捷项目中的文档应该是有目的性的去编写,是为了解决某种问题,而不是为了文档而文档。为了达成不同的目的,不同的文档它的受众也是不同的。
我们来看看通常在敏捷项目中能通过文档来达成那些目的:
建立共识
有些问题或者需求的最终目标对每个SCRUM成员可能都是清楚的,但是每个人却有不同的实现方法,比如数据入库,可以通过DB COPY,也可以INSERT, 也可以通过云服务,比如FIREHOSE,这个时候创建文档有助于明确建立这个议题并确定议题范围,通过文档把最终决定记录下来,所有人达成共识。
暴露复杂性
即使敏捷开发应该极力简化,但有些时候一个简单的问题,背后却隐藏着非常多的影响以及隐性的复杂性。这种情况下,文档可以把详尽的分析以及影响非常明确的罗列出来,帮助检视和确认后续开发的正确性和完整性。
创造同理心
项目文档能帮助理解软件的关键原理或者复杂逻辑,以此减轻SCRUM成员和其他干系人的担忧和困惑。因此那些有着复杂逻辑算法或者异常重要的功能点,都是有必要编写相应文档的。
帮助决策
随着软件的更迭交接,特别是他人接手后,可以参考文档去了解它是如何构建的,以及为什么在当时做出某些决策,可以帮助后来者更好的更安全的进行软件进化演进。对于当时没有做出决策的情况,文档也能解释为什么当时没有做出决策的背景以及复杂性。
最后
文档要达到这些目的,非常重要的是坚持保持文档更新。
对于过多文档化的团队来说:确定文档优先顺序的标准是文档的价值;对于过少文档化的团队来说:需要反思是不是缺少了必要的文档,哪些文档可以提高团队效率。