经常听见敏捷开发这个词,还有Scrum和XP,它们究竟都是什么意思,直接来聊一聊这几个关于软件流程和项目管理有关的常见话题。
话说软件最开始出现的时候,开发规模很小,以小作坊开发的模式为主。后来,硬件发展起来,需要更大规模更复杂的软件才能满足需求,作坊式的生产软件效率低,已经不能满足这种规模的软件项目开发,所以20世纪80年代出现了瀑布模型。
瀑布模型提出了一个软件声明周期的概念,其实就是强调按照:可行性研究-需求分析-设计-编码-测试-运行维护,这样的固定顺序开始工作,就是相当于需求一旦确定,进入开发阶段,需求就不能再改了。变更需求就只能在下个周期进行。这对频繁变化的需求完成的效率非常低,所以又出现了敏捷开发。
什么是敏捷开发
敏捷开发是以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。
这个概念读起来貌似有一点生硬,直接通过几个典型的特性来说明。
1、快速迭代
2、开发和测试人员参与需求过程
3、合作沟通
就是在客户还没有明确要什么的时候,保持沟通合作持续改进,以用户故事描述软件需求。内部团队保持简洁高效的沟通,用站会等方式直接反馈工作进度,通过团队的协作和优化反馈方式应对快速变化的需求,相应地缩短交付周期,最终通过不断的澄清用户需求,最终交付符合用户价值的产品。
总结下来,其实敏捷是一种思想,敏捷开发就是敏捷思想的一个实际应用,一旦思想指导到实际应用,就具化成一些行之有效的手段和原则,比如极限编程(Extreme Programming即XP)、Scrum等这些都算是敏捷开发的一种应用框架。
什么是极限编程
为什么叫做极限?原因是XP强调把整个工作流程都做到极限,做到最好,包括极限工作环境、极限的需求、极限的设计、极限的编程、极限的设计,比如它要求交付用户的版本一定时能够使用的,重复冗余的代码一定要被重构。而其它XP所不提倡的,则一概忽略(如开发前期的整体设计等)。
再来简单介绍一个概念:用户故事
用户故事就是描述对用户有价值的功能,简单点说就是敏捷开发里强调的管理需求的方式。
极限编程的角色
产品经理:负责编写用户故事,排列故事优先级以及验证用户故事
项目经理:负责管理项目进度和流程
程序员:负责开发任务,并对代码进行单元测试
极限编程的工作方式
1、产品经理从客户处获取需求,编写用户故事,并确定需求优先级;
2、开发和产品共同对需求清单进行评估,确定迭代周期,并按照优先级确定在该迭代周期内完成的需求;
3、进入开发阶段,开发团队每日更新进度,产品经理可以调整合理的需求,开发团队做到快速响应;
4、迭代周期结束,产品经理验收迭代结果,团队总结进度预期经验,并发布版本。
极限编程的价值
重视沟通,沟通方式不拘泥于形式,可以是谈话、会议或者直接画图
简单,以最简单的方式解决需求
重视反馈,无论是用户反馈还是团队内部人员对产品的反馈
勇气,有勇气不断优化产品功能
什么是Scrum
Scrum与极限编程类似,也是一种迭代递增的开发过程。
Scrum角色
与极限编程类似,但是各类人员之间并没有严格的区分,比如上线前夕,产品经理也可以兼职测试。
Scrum的工作方式
1、产品经理列出需求清单(产品Backlog),并选择优先级高的需求作为本次迭代的需求;
2、项目经理给团队成员分配开发任务,并进入开发,开发阶段不允许变更本次迭代的需求;
3、开发阶段每天进行简会(Daily Scrum),审查进度,反馈问题;
4、迭代周期结束,产品经理验收迭代结果,团队总结进度预期经验,并发布版本。
二者的区别
Scrum团队典型地工作在一个从2周到4周为长度的迭代周期中(也被称为Sprints)。而XP团队典型地工作在从1周到2周为长度的迭代周期中。
Scrum团队在Sprints迭代周期中不允许发生变更。XP团队经常在他们的迭代周期中进行变更。只要XP团队还没有开始开发一个特定的功能,在XP团队的迭代中可以使用与之前功能规模等价的新的功能来替换还没有开始开发的功能。
XP团队的开发工作严格遵守优先级顺序。相比之下,Scrum团队产品负责人排列的优先级排序,开发团队并不完全按照这个顺序开发,会有一些调整。
总结
在Scrum和XP虽然存在区别,但是主要思想依旧是敏捷开发,在进行项目管理时还是要根据团队情况,选择合适的应用框架。敏捷开发模式可以让产品在市场上快速试错,根据数据的反馈进行及时的战略调整,让产品在市场立于不败之地,而在这个过程中,产品经理无疑是最重要的一个角色。
作者:一枚电商产品妹子,爱产品,爱生活。(微信公众号:产品爱磨叽)