近期参加了公司组织的风险管理培训,结合Agile/Scrum,总结了一下自己对Why Agile/Scrum的理解,以下仅为个人见解,如有雷同,只能说英雄所见略同:)
Essential Essence of Agile by Dave Tian
1. 挖掘客户的need而不是want - 通过与PO的及时、按时沟通,以最低风险达到客户最大满意度和最大收益
2. 软件开发从功能层面转向业务层面 - 通过捆绑PO、dev、tester,使团队整体感知客户的业务,高屋建瓴领,而不是仅仅专注于feature层面
3. 应对客户需求的多变 - 通过PO和短期迭代,随时交付可用产品(demo),客户可随时根据自身情况作出需求调整
4. 应对现代软件管理的滞后与盲目预测 - 混沌告诉我们超过24小时的天气预报是扯淡,那么在软件项目开始前就做出的任何预测也将在短期内失效,通过Scrum每天的例会和短期迭代,把大计划分化成阶段计划,并可以根据backlog里feature的prio随时更新计划
5. 应对软件开发人员水平的参差不齐 - 通过Scrum的例会,随时总结个人项目中的问题并分享与团队,以期团队整体在项目中最大化技术提升和团队战斗力而不是重在个人
6. 应对软件测试的资源浪费和事倍功半 - 忘了谁说的这句话(大概意思),软件测试不是用来发现bug的。个人非常同意,dev应当是自己code的最好tester,于是在agile中,dev应当充分利用新的UT技术或者其他自动化测试技术来完成对自己code的测试;而tester将从功能测试的层面转向业务层面,而业务层面的测试又要求新技术TDD、BDD、ATDD的应用(如果以现在FT、ST、NLT的架构来看,那么dev将负责FT和ST,tester会直接专注于NLT-业务层面)