Agile 笔记
- Agile 概念
- 敏捷宣言
- 敏捷12大原则
Agile概念
-
项目的确定性与不确定性
- 确定性:需求明确,一次设计,后续基本不用改变。如建房子。
- 不确定性:需求不确定,变化太快,需要不断改进。如果电商网站系统,第一个月用户量是1万,第二个月可能就是10万。用户数是不确定的,需要将产品快速投入市场,得到用户反馈。然后根据反馈,快速迭代发布下一个版本满足需求变化。
-
敏捷宣言 & 思维模式
- 个体以及互动胜过过程与工具
(Individuals and interactions over processes and tools)
理解:强调的是人,一个team的人怎么才能更好的工作在一起交付出有价值的产品。也就是说在一个项目中人与沟通交互才是更关键的因素相比流程和工具,人驱动流程和工具为项目服务,由人去快速回应客户需求。流程和工具不会主动去回应和沟通需求变化,最终都是要人去主动发现并解决。比如在项目中需要开发的功能与客户的需求不匹配,自动化测试工具不会告诉你是需求不匹配,会告诉你测试用例失败,再由测试人员和开发人员去发现并找出根原因。这时更需要项目相关人员与客户的理解是一致的,就需要主动沟通。 - 可用软件胜过完整的文档
(Working Software over comprehensive documentation)
理解:这条强调的是产品。以前的项目,通常是各种文档非常详细才开工。这样就会花去相当多时间去写文档,问题是最终产品开发出来还不是客户想要的。客户首先想看到的是符合需求的产品功能,文档并不能满足客户的第一优先级期望。所以快速开发一个可用软件产品,拿 到客户反馈,及时发现问题并解决。 提前失败总比最终项目结束才失败的风险来的低。 - 客户合作胜过合同谈判
(Customer collaboration over contract negotiation)
理解:这条强调的是沟通。合同估然重要,但项目成功才是关键。当出现问题是客户越早参与项目各个环节,并可以直接沟通,有必要客户可以直接参与daily meeting,问题趁早发现并解决。以往项目经验是合同一签,客户到点验收,结果各种问题拖着不验收。不是说把问题堆到项目结束,拿出合同来踢球,这样只会导致项目往失败方向倾斜。 - 响应变更胜过遵循计划
(Responding to change over following a plan)
理解:这里强调的是拥抱变化。按我们常说的计划赶不上变化,现在社会变化太快,客户产品同样需要随着社会需求的变化而化,这样才有竞争力,市场才会买单。计划只是一个开始,不是结束。快整响应客户需求,修订计划,项目最终才会成功。实险上传统项目施工人员也常常抱怨客户老是改需求,尤其是到越到最后,改动是代价就越大。即然改动是一个不可避免的,为何不提前发现,积极响应。A
Note: 也就是说,右边项目固然有它的价值,但我们更看重左边项目。
That is, while there is value in the items on the right, we value the items on the left more.
- 个体以及互动胜过过程与工具
-
十二大原则,源自上面价值观
- 我们最高目标是,通过尽早并持续交付有价值的软件来满足客户的需求
(Our highest priority is to satisfy the customer through early and continuous delivery of valuable software) - 欢迎对需求提出变更,即使在项目后期也不例外。敏捷过程要善于利用需求变更,帮助客户获得竞争优势。
(Welcome changing requirements,even late in development. Agile processes harness change for the customer’s competitive advantage.) - 要经常交付可用软件,周期从几周到几个月不等,且越短越好。
(Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.) - 项目实施过程中,业务人员和开发人员要始终通力合作。
(Business people and developers must work together daily throughout the project.) - 要善于激励项目人员,给予他们所需要的环境和支持,并相信他们能够完成任务。
(Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.) - 无论是对开发团队还是团队内部,信息传达最有效的方法是面对面交谈。
(The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.) - 可用软件是衡量进度的首要衡量标准。
(Working software i sthe primary measure of progress.) - 敏捷过程提倡可持续的开发。项目发起人、开发人员和用户应该都能够始终保持步调稳定。
(Agile processes promote sustainable development. the sponsors,developments, and users should be able to maintain a constant pace indifinitely.) - 对技术的精益求精及对设计的不断完善将提高敏捷性。
(Continuous attention to technical excellence and good design enhances agility.) - 简洁,即尽最大可能减少不必要的工作,这是一门艺术。
(*Simplicity-the art of maximizing the amount of work not done-is essential. *) - 最佳的架构、需求和设计将出自于自组织团队。
(The best architectures , requirements, and designs emerge from self-organizing teams.) - 团队要定期发省怎样做才能做的更有效,并相应的调整团队行为。
(At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.)
- 我们最高目标是,通过尽早并持续交付有价值的软件来满足客户的需求