对敏捷开发的三种误读。
1、敏捷就是追求快,越快越敏捷。所以可以只写代码不写注释、不写文档。
2、敏捷迭代就是尽量做到最小版本上线,每天上线的版本越多越敏捷。
3、敏捷是那些厉害程序员才能用到的技能。初学者用不会。
敏捷适合所有人,而且不只是用于开发上。敏捷是一种思维方式。
那到底什么是敏捷开发方法?
一种把以人为本、团队合作、快速响应变化和可工作的软件(目标结果)作为宗旨的开发方法。它要求我们只关注真正重要的事情,少关注那些占用大量时间却不重要的事。
从定义上我们可以看出,敏捷注重人与人的协同沟通,是一种团队合作方式。可以根据外部的反馈持续迭代,最终形成一个可执行的软件。
敏捷的开发宣言
个体和交互胜过过程和工具
团队之间的沟通与协作才是最重要的。
可工作的软件胜过面面俱到的文档
文档是为软件做服务的,文档的标准应该短小易读,容易维护。并不要求写多么详细。关键不是做不做文档,而是你花了多少时间做文档,花了多少时间写程序。
客户协作胜过合同谈判
客户的需求是变化的,为了避免变动导致开发做很多无用功。在开发过程中双方要达成共识,通过小版本迭代的方式来达成客户目标。
响应变化胜过遵循计划
制定计划时候,留出缓冲期,根据需求的变化,随时调整计划。
那为什么不一次性就完成软件呢?这样成本不是更小么?
我认为关键点有3个
1、市场具有不确定性,在逻辑上推演成立,现实落地却不一定。
2、软件不可能完美。而越早发现问题,解决问题的代价越小。
3、用户需求是持续变化的。要满足新需求就要进行迭代修改。
敏捷的修炼之道
用一句话概括敏捷的精髓:敏捷开发就是在一个高度协作的环境中,不断地使用反馈进行自我调整和完善。
自我调整和完善,就是迭代,正确的迭代方式是,确定一小块时间(我团队是1周- 4周)的计划,然后按时完成它们。每一次迭代都包括了需求分析、设计、实现与测试。每一次迭代都需要完成整个系统中的一部分功能或者某个完整业务逻辑的开发。测试上线后,再通过用户的反馈来优化需求(保证方向正确),并开始新一轮的迭代。