敏捷是在合作环境下由自组织的团队进行产品迭代开发的过程,通过渐进式的迭代步骤,应对未预期到的事项。敏捷开发是软件行业普遍应用的开发方法。
1、了解敏捷宣言
我们正在寻找更好的开发软件的方法,我们全力以赴,同时也在相互帮助,在探索之路上,我们遵循以下原则:
个体和交互胜过过程和工具;
可运行的软件胜过面面俱到的文档;
客户合作胜过合同谈判;
响应变化胜过遵循计划;
尽管在每一句中,右侧的事项确有价值,但我们认为左侧的事项更重要、价值更大。
2、敏捷开发的关键原则
我们的首要任务是通过尽早和持续交付有价值的软件来满足客户;
即使在开发后期,我们也欢迎需求变更,敏捷流程将这些变更转化为客户的竞争优势;
频繁的交付可运行的软件,数周或者数月交付一次,时间间隔越短越好;
项目期间,业务人员与开发者共同工作;
招揽积极主动的人员来开发项目,为他们提供所需的环境和支持,相信他们能做好自己的工作;
开发团队里最省时有效的信息传递方式是面对面交流;
可运行的软件是衡量进展的主要标准;
敏捷流程有利于可持续开发,发起人、开发人员、用户应始终保持一个固定的前进步伐;
持续关注先进的技术和优秀的设计,提高敏捷性;
简洁--令待工作是最少化的艺术是一切的基础;
只有自组织的团队才能做出最好的架构和设计;
团队定期反思如何提高效率并调整工作流程;
3、敏捷开发的关键要求
1)产品待办列表
是一份包括系统所需的一系列事项要求,并将他们按优先级排列的清单,包括功能性和非功能性的客户需求,以及技术团队产生的需求
虽然产品待办列表有多种来源,但确定优先级是产品主管的独有职责
一个产品待办清单是一个足够小的工作单元,团队能够在一次冲刺迭代周期中完成。
2)敏捷流程
是最流行的敏捷实施框架
通过该方法,软件生成得以按规律的步调进行,并由一系列固定长度的迭代过程开发出产品;
3)冲刺
指完成特定任务,使开发阶段得以进入审查环节的一段时期。
规划会议是每次冲刺的起点,在会议上,产品主管和开发团队商讨并确定此次冲刺所要完成的工作。
冲刺周期由敏捷教练完成;
冲刺开始后,产品主管暂停工作,由开发团队主持续工作;
冲刺结束后,团队将已经完成的工作提交给产品主管;
产品主管依据冲刺会议上设定的标准,决定接受或否决这项工作;
4)产品主管
产品主管代表客户利益、拥有最终决定权的那个人,团队必须随时可以联系到他,特别是在冲刺的规划会议期间;
在冲刺开始后,产品主管不应当再管理团队,也不应当再变更任务;
产品主管的主要职责是平衡有竞争关系的利益相关方之间的利益;
5)敏捷教练
敏捷教练是团队和产品主管之间的协调人,他的职责是通过以下方式帮助团队成员和产品主管:
消除团队和产品主管之间的障碍;
激发团队的创造力,给团队授权;
提升团队生产率;
改进工程工具和实践;
确保团队取得进展的信息实时更新,让各方成员均可见;
6)敏捷团队
敏捷团队通常由7+/-2组成,为了实现冲刺目标,团队成员通过由多个职能部门、非专业的人员组成。包括软件工程师、架构师、程序员、分析员、质量专家、测试员及UI设计师等。
在冲刺期间,团队通过自组织的方式实现冲刺目标
团队成员在实现目标方法上有自主选择权,并需要对这些目标负责;
4、敏捷开发的优势
对于业务要求很难被量化或难以成功的产品开发项目来说,敏捷流程带来了新的可行机会;
凭借敏捷方法,快速变化中的前沿开发得以被迅速编码和测试,一旦出现错误,也可以很容易地纠正;
通过定期会议经常性地更新工作进展,敏捷是一种轻量级的管控方法,因此项目开发有明显的可视性;
像任何其它敏捷方法一样,其本质是迭代,需要来自用户的持续反馈;
由于冲刺周期短,反馈及时,团队更容易应对变化;
通过日常会议可以评估个体的生产力,从而提高团队成员的生产率;
通过日常会议可以提前识别问题,随后迅速解决问题;
敏捷方法与任何技术或编程语言兼容,特别是快速发展的网络2.0项目或新媒体项目;
在流程和管理方面的运营成本最小,由此项目进展更快、花费更少;
5、敏捷开发的局限性
敏捷是出现“范围蔓延”问题的主要原因,这是因为,除非有一个明确的截止日期,否则项目管理相关者会不断要求团队交付新功能;
如果任务的定义不明确,对项目成本和时间的预估是不准确的,在这种情况下,可以将任务划分为多次冲刺;
如果团队成员没有全力以赴,项目将永远不会完成或将失败;
因为敏捷方法可以由小型团队完成,它适用于快速变化的小型项目;
敏捷方法需要有经验的团队成员,如果团队中有新手,项目可能无法按时完成;
若敏捷教练信任手下的团队,敏捷方法与项目管理的配合效果良好;
若敏捷教练对团队成员实行过行严格的控制将会给团队带来极大的挫败感,导致团队缺乏劳动力,进而导致项目失败;
任务一个团队成员在开展过程中离开都会对项目开发发生巨大的负面效果;
除非测试团队能够在每次冲刺中进行回归测试,否则项目质量将难以实施和量化落地