“敏捷”在互联网和软件开发领域从涓涓细流逐渐演变为行业潮流,往小了说是改进了开发方法,往大了说是革了瀑布流式的命——把产品开发引向了快速迭代、小步快跑的路线上。
敏捷开发,是一种早在 1990 年代就已经开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
敏捷软体开发(或称快速程式开发 RAD)描述了一套软件开发的价值和原则,在这些开发中,需求和解决方案皆通过自组织跨功能团队达成。敏捷软体开发主张适度的计画、进化开发、提前交付与持续改进,并且鼓励快速与灵活的面对开发与变更。这些原则支援许多软件开发方法的定义和持续进化。
开发宣言
- 个体和互动:高于流程和工具。
- 工作的软件:高于详尽的文档。
- 客户合作:高于合同谈判。
- 响应变化:高于遵循计划。
虽然敏捷开发也很重视右边的内容,但是更重视左边的内容。相关术语的意思是:
- 个人和互动:自我组织和动机是重要的,像共同定位和双人程式开发,这样作业模式中的沟通是重要的。建立一个良好的沟通和协作的开发团队,优于一个孤立运行的专家团队。沟通是一个基本的概念。
- 工作软体:工作软体比在会议中向客户呈现文件更有用并更受欢迎。最好的做法是和程式码一起评论,保持外部文件的轻量化,而不是沉重的文件,后者需要花费很大的精力,且很快就会过时。
- 客户协作:在软体开发周期的初始阶段,需求无法完全收集,所以最好直接涉及到付费客户、最终用户或者代理,以便在反馈的基础上逐步阐述和调整详细的需求。
- 回应变化:敏捷软件开发方法的重点是快速响应变化和持续发展。
初识敏捷开发
agile
迅速,敏捷。这是敏捷的理念也是精髓:迅速响应需求,快速反馈结果。agile 的引入像一股活水冲击着老气横秋的瀑布流模型,速度上跑赢几条街。
sprint
字面意思是短跑冲刺,一个开发阶段被认为是一次冲刺,一个个 sprint 首位相连,构成一个项目。
Scrum
指的是英式橄榄球中一股脑争球这一战术或行为。
scrum 即为这样一种方式,大家一拥而上,团队是球员,球是产品目标,人员环环相扣,围绕着产品目标进行工作。这里面多少有点“统筹法”的影子,人员深入协作以达到最优化效果。
Product Backlog
backlog 即需求池。待办事项列表。
Backlog 里面写什么:
1.待开发任务。
2.任务优先级。
敏捷需要维护一份详尽的需求列表。这份列表常常要求 scrum 持有人(一般是产品经理)对所有待开发事项有深入了解,并且能够把待开发事项分解成更为细致的任务(或者跟敏捷教练一起,后面我们会再次提到敏捷教练)
story board
很多领域都有故事板的概念,交互领域里,用故事板表述用户场景、电影领域里故事板用来更具体地描述分镜。在开发领域,故事版是任务流转的可视化窗口,一般有“待开发”“开发中”“待测试”“返工”“待发布”几个区块,所有任务由任务操作者负责流转至于下一个步骤,这样任何一个人项目成员都能看到任务的完成情况。在开发中,故事板展现所有需求的工作流。
burn down chart
燃尽图
一个 sprint 内,人/时是一个比较固定的值。在这个时间框架充分安排开发任务,每天进行时间结算,绘制时间燃尽图。项目成员通过燃尽图获知时间进展,若项目燃尽所用时间与预期时间契合,则需求时间预估和安排合理,若不契合则需要在下一个 sprint 进行调整。
名词听起来都玄乎乎的,很符合开宗立派的气质。这些概念定义了敏捷各个环节的工作,这些流程和节点是敏捷开展的基础和保障。
最流行的敏捷开发方式
敏捷开发的方法有很多:ASD、AUP、DSDM、XP、FDD、Kanban、RAD、Scrum。目前国内最流行的应属 Scrum。
Scrum 本意是指橄榄球运动中的“带球过人”,它可以解决非常复杂的项目,并且能高效并创造性地交付高价值的产品。Scrum 包含 3 个角色、3 个工件、5 个价值观、5 个事件(详情Scrum)。
相比其他敏捷方法,Scrum 既不简单又不复杂。它有完善的指南,你可以按照指南,轻易在团队内推广尝试。但想要实践好 Scrum,又需要很好的技巧。这种易上手难精通的方法,特别适合培训机构。所以近几年,关于 Scrum 的培训机构遍地都是。可以说,在 Scrum 流行这件事上,这些培训机构做了很大的贡献。