转自 InfoQ: http://www.infoq.com/cn/news/2009/02/agile-documents
软件项目中有很多种文档,包括需求文档、设计文档、API文档、缺陷报告、进度报告、移交文档、验收文档等等。
在传统的软件项目开发中,每个团队成员都要花费很多时间和精力去维护文档及填写各种表格和报告。第二条敏捷宣言是"可工作的软件胜于详尽的文档",据此很多人想当然认为敏捷开发不重视文档。更有甚者,有人为逃避写文档而借口敏捷开发不需要文档,成为所谓的PAP(Pretty Adventuresome Programming)。其实这些人忽略了敏捷开发中有很多实践(比如坐在一起、现场客户、测试驱动开发、客户测试、结对编程、信息化工作间等等),敏捷借助这些实践进行信息交流,起到了文档在传统软件开发中的作用。本文通过分析项目开发中的文档类型与作用来说明敏捷开发中为什么很多文档是不需要的。
首先,需要明确文档的用途,文档是用来交流信息的。关键是团队中信息分享是否及时准确,而这与文档的多少没有必然的联系。就比如James Shore在博文"文档之谜"(http://jamesshore.com/Blog/The-Documentation-Myth.html)里面指出的,很多人指责敏捷开发的文档不够。其实他们忽略了问题的实质,"丰富的文档并不一定是好事,能及时得到答案才是好的"(Myth: Document is good; Reality: Answer is good)。
专业知识或者信息主要分为两类:
- 可以被整理,文档化的知识,一般只占所有知识的30%。
- 占70%的存在于人脑中的隐含(Tacit)知识,只能通过人与人之间的交流来分享,口口相传。因此促进团队内部以及团队之间的交流对信息的传播更加有效。
软件项目文档通常有三种:
- 项目文档,用于项目组内部信息交流,比如需求文档、设计文档、进度报告等。
- 产品文档,通常是有业务价值的,是客户需要的,比如用户手册或者API文档。
- 移交文档,在项目移交或者项目不同阶段之间移交的成果物。
产品文档是客户需要的,是产品的一部分,有业务价值,绝对不能省略。应该在迭代中为其安排一个文档任务。
从敏捷角度来看,另外两类文档中的很多种是可以简化或者省略的。
在敏捷开发过程中,
正如James Shore总结的,获得信息的手段有很多。
最优的手段,代码清楚、单元测试完备、命名规范,因此根本不需要问;
其次,只需要问一下旁边的人,或者打一个电话,就可以立刻得到答案,这也就是为什么敏捷鼓励“坐在一起”和“现场客户”r;
再次,Google一下找到答案,这也不错;
……
很次,可以通过读文档找到答案。可是为了找到答案,需要读的文档越多,效果越差...
分享到:
相关推荐
敏捷项目管理与传统项目管理在文档管理方面存在明显的差异。传统的项目文档通常包括需求描述和技术实现的详细信息,注重于“为什么做”、“做什么”和“怎么做”的书写逻辑。在传统项目文档中,需求分析人员通过访谈...
在敏捷转型中,团队文化需要适应敏捷的价值观和原则,如重视个人和互动高于流程和工具、重视可工作的软件高于详尽的文档、响应变化高于遵循计划等。敏捷文化的培养有助于团队成员之间更有效的沟通和协作,从而提高...
4. 过程与实践的改进:传统企业需要抛弃那些固化的流程和做法,转而采用能够快速迭代和持续改进的敏捷实践。这包括定期进行敏捷回顾、迭代规划和产品演示。 5. 人员的培训和教育:为了支持敏捷转型,企业需要对员工...
在"在Python中结合doctest和Epydoc产生敏捷文档的一种方法.pdf"这个文件中,可能详细阐述了如何设置和使用这两个工具,包括具体配置、示例代码以及实践中的注意事项。建议阅读该文件以获取更深入的了解和实践指导。
不过,敏捷设计并不像传统开发那样产生详尽的文档,而是更加注重可执行的、轻量级的设计输出。 **数据结构设计**在敏捷和传统开发中都是必不可少的。敏捷开发的数据结构设计通常从业务模型(领域模型)开始,然后...
### NetApp 混合云主力业务更敏捷文档 #### 关键知识点概述: - **NetApp 转型至第三个“M”时代**:NetApp 正帮助客户过渡到一个新阶段,即从传统的单一系统架构(Monolithic)转向更加灵活、微服务化的体系结构...
本资源包包含了四个关键文档,旨在帮助项目团队高效地执行敏捷开发和测试活动。 1. 敏捷流程:SICAPd团队敏捷开发流程过程.xlsx提供了详细的敏捷开发流程模板,通常包括迭代规划、每日站立会议、回顾会议和冲刺结束...
【敏捷开发全程实战(广州).doc】这份文档很可能是详细的案例研究或培训材料,涵盖了敏捷在广州某项目中的具体应用和实践经验。通过学习和分析这个案例,我们可以更好地理解敏捷开发在不同环境和团队中的适用性,以及...
文档标题为《何勉-规模化精益敏捷实施.pdf》,从标题中我们可以看出文档的主题涉及“规模化”和“精益敏捷实施”。而标签中的“规模化精益敏捷实施”再次强调了这一点。基于这些信息,我们可以构建相关的知识点如下...
7. **文档和社区支持**:在"2版转3版文档"中,可能会包含开发者在实际移植过程中遇到的问题及解决方案,这些经验分享对于其他开发者来说非常有价值。Symbian Forum和相关的技术社区也是获取帮助和交流经验的重要资源...
1. 敏捷开发与传统开发的对比和问题解决方案:敏捷开发强调快速响应变化、客户合作和迭代交付,而传统开发则更侧重于阶段性的规划和文档。在实践中,敏捷开发会遇到对变化管理、团队协作、客户需求梳理等方面的挑战...
敏捷开发是一种旨在提高软件开发效率和质量的方法论,其核心理念是通过持续的反馈和适应性调整,确保软件产品能够快速响应变化,并满足用户的真实需求。《敏捷开发的必要技巧》一书,由王伟杰(Wingel)翻译自...
### 敏捷书籍源代码就是设计 #### 核心知识点解析: **1. 源代码作为设计的核心地位** 在IT行业中,特别是在软件开发领域,一个重要的转变观念被提出:“源代码就是设计”。这一概念由Jack Reeves在1986年提出,...
学习SOA文档能够帮助我们深入了解SOA的基本原则、实施策略以及如何通过SOA提升企业的业务敏捷性和价值。 标签:SOA文档学习 部分内容解析:CBDIReport提供的执行简报深入探讨了服务导向架构(SOA)和Web服务的价值...
2. 可工作的软件高于详尽的文档:更重视实际能运行的软件,而不是大量无用的文档。 3. 客户合作高于合同谈判:提倡与客户保持紧密合作,共同决策,而不是严格遵守合同条款。 4. 响应变化高于遵循计划:敏捷开发认为...
书中可能会介绍敏捷宣言的价值观和原则,如个体和交互胜过过程和工具,可工作的软件胜过详尽的文档,客户合作胜过合同谈判,以及响应变化胜过遵循计划。 其次,书中可能会详细阐述敏捷测试的角色和责任。在敏捷团队...
从提供的文件信息中,我们可以提炼出多个知识点,涉及敏捷开发、Scrum、持续集成、ATDD、结对编程以及敏捷教练的职责和成长路径。下面是对这些知识点的详细说明: 1. 敏捷开发(Agile Development) 敏捷开发是一种...
敏捷的核心原则包括个体和互动高于流程和工具、可工作的软件高于详尽的文档、客户合作高于合同谈判以及响应变化高于遵循计划。敏捷方法论包括Scrum、XP(极限编程)、Kanban等,它们强调团队协作、自组织、短期迭代...