1
敏捷是什么
敏捷单从字面意思来理解是:指反应(多指动作或言行)迅速快捷。这里提到的敏捷是一种思想,一种态度,倡导简单设计,快速交付,价值导向,响应变化。这里的价值需要注意一下,一定是用户能感知到的。敏捷是促进变革并响应变化以便在动荡的商业环境中创造利润的能力,是平衡稳定性和灵活性的能力。
2
敏捷的核心思想是什么
敏捷的核心思想可以用三个词来形容:
- 快速:以最快的速度交付,保持这种优势就可以比别人更有市场。
- 高效:敏捷团队成员组织高效协同,保障持续交付价值。
- 试错:通过低成本的不断的试错,找到客户真正的需求,才是占领市场的关键,也是必胜之道。
3
敏捷的人员组织结构是什么
践行敏捷也是需要按照敏捷思维进行分工的,那么这种分工我们就不得不提到SCRUM方法,它是一种敏捷方法,这里面就涉及到了三种成员,也就是在SCRUM中应有的三种角色。
- 产品负责人,一般由产品经理来担任,作为项目的第一负责人,产品经理要负责产品的方向,并对最终交付的产品负责。其详细职责包括:他需要将待办事项里的需求按客户价值进行排序,还要从客户那里获得产品反馈并告诉团队应该如何改善。产品负责人与团队开展日常合作,参加迭代计划会、每日晨会、评审会与回顾会等,并且为将要开发或交付的下一个版本设定方向。
- 敏捷教练,也被称为 Scrum 主管、团队教练或者团队促进者,一般情况下,由项目经理、研发经理或者质量经理来担任,在所有的敏捷团队中我们都需要有这个角色。敏捷教练应该具备这些能力: 敏捷专家,具备丰富的知识和实践经验,能够带领团队顺利完成敏捷转型。 障碍清除者,在敏捷实践过程中,能够帮助团队清除一些障碍,让项目如期交付。 仆人式领导,能够将领导力从命令式转向服务式,帮助团队快速成长。 变革的引领者,具有感染力,能够身先士卒,带领团队不断拥抱变化。
- 团队成员,敏捷中的团队通常指跨职能团队,这是敏捷实践中重要的一环。跨职能团队指打破职能界限,将团队中持续交付产品所需的所有角色,按照项目在空间上聚集在一起,大家共同负责该项目的 KPI,比如设计人员、开发人员、测试人员以及其他所需角色。跨职能团队往往能够在更短的时间,独立地交付高质量的产品,所以我们要注重建立跨职能团队。
4
敏捷的流程是什么
敏捷开发的核心是迭代开发(iterative development)。敏捷一定是采用迭代开发的方式。 迭代开发将一个大任务,分解成多次连续的开发,本质就是逐步改进。 迭代开发只是要求将开发分成多个迭代,并没有回答一个重要的问题:怎么划分迭代,哪个任务在这个迭代,哪个任务在下个迭代?这时,一般采用“增量开发”(incremental development)划分迭代。
所谓“增量开发”,指的是软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,按照新增功能来划分迭代。虽然敏捷开发将软件开发分成多个迭代,但是也要求,每次迭代都是一个完整的软件开发周期,必须按照软件工程的方法论,进行正规的流程管理。
敏捷的流程实际可以理解为迭代开发的流程,但都必须依次完成以下五个步骤:
- 需求分析(requirements analysis)
- 设计(design)
- 编码(coding)
- 测试(testing)
- 部署和评估(deployment / evaluation)
流程图如下:
5
敏捷开发适合什么场景
如果我们的客户要求提供的需求是原子性的交付,他们能够立即验证与使用,而不必要去等所有的需求全部完成,这就适合敏捷开发。当我们交付这部分的需求后,我们的客户就已经能够使用了,我们就把这种少量交付成果发布出来,这也就满足了客户的要求,达到了敏捷开发的目的。
6
敏捷开发的最佳实践是什么
我们是通过这些具体的内容来评判是否是最佳实践的:
- 稳定的团队:我们需要稳定、有默契的团队,即在很长一段时间内团队成员是固定不变的。所以要做好团队成员的沟通与交流,保障团队稳定。
- 可预见的速率:我们需要在一个迭代当中形成团队的速率,更容易知道下一个迭代我们可以做完哪些工作。
- 单件流:我们需要集中精力一次做好一件事情,所以不欢迎并行任务,单线程工作。
- 质量内建:我们需要在每一个环节保证好自己的质量,不让质量问题留到下游,把控好质量关口。
- 日事日毕:我们需要把任务粒度拆分成至多1天,以方便每天知道我们的工作进展,做到工作任务可测量。
- 设有紧急停车带:我们需要给紧急任务加上紧急停车带,以便分析紧急任务的插入情况。
- 滚动迭代:我们需要通过迭代交付来完善我们的产品,这种迭代也是持续不断的。
- 持续改进:我们需要通过回顾和总结,不断强化我们的团队能力,将本轮迭代中的问题纳入到下一轮的迭代中解决掉。
7
敏捷开发有什么好处
也相当于为什么要敏捷开发?
第一个好处:早期交付,从而大大降低成本。 第二个好处:及时了解市场需求,降低产品不适用的风险。
8
敏捷开发的十二条原则
- 通过早期和持续交付有价值的软件,实现客户满意度。
- 欢迎不断变化的需求,即使是在项目开发的后期。要善于利用需求变更,帮助客户获得竞争优势。
- 不断交付可用的软件,周期通常是几周,越短越好。
- 项目过程中,业务人员与开发人员必须在一起工作。
- 项目必须围绕那些有内在动力的个人而建立,他们应该受到信任。
- 面对面交谈是最好的沟通方式。
- 可用性是衡量进度的主要指标。
- 提倡可持续的开发,保持稳定的进展速度。
- 不断关注技术是否优秀,设计是否良好。
- 简单性至关重要,尽最大可能减少不必要的工作。
- 最好的架构、要求和设计,来自团队内部自发的认识。
- 团队要定期反思如何更有效,并相应地进行调整。
友情提示:“无量测试之道”原创著作,欢迎关注交流,禁止第三方不显示文章来源时转载。