前段时间一篇张小龙最新内部演讲刷爆朋友圈,小影的领导看得不亦乐乎,一键转发,叮嘱认真研读,学习敏捷项目管理。小影认真拜读文章后,早已泪流满面,领导咋你不提提里面提到的kpi问题呢?TAT。能够提高开发效率,绝对是个好东西。那管理究竟能不能提高开发效率,怎么样提高效率?小影是个好奇宝宝,马上了解这个领导喜欢,噢,应该是张小龙推荐的敏捷项目管理是个啥。
什么是敏捷项目管理?
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。这个词对于开发的童鞋们来说应该不陌生。而敏捷项目管理和敏捷开发说的都是一回事。以下统称敏捷开发。
为什么要敏捷开发?
传统的开发是瀑布流的方式进行。即需求采集-需求分析-程序设计-开发-测试-验收-发布。由于前提是所有需求都是确定且固定,所以传统的项目管理会有WPS任务分解,里程碑这些详细的计划安排,好处就是领导层可以很清晰知道团队要做什么,现在做到什么程度。而敏捷开发周期很短,可能在这个scrum开发完后,下个scrum需求起了变化,团队应该迅速适应。
现在互联网变化很快,今天是个新的需求,过几天需求已经不适用了,所以还像以前那样制定详细计划,容易闭门造车,出来的产品已经落后,瀑布流的开发方式不太适用于以产品为核心的开发管理。由于敏捷项目管理的周期短,变化快,越来越多产品驱动公司已经使用这方法。不好的是这个团队可能很难确切描述未来将会如何变化,很难像普通传统项目管理有详细计划,领导层无法把控进度。
什么样的项目需要敏捷开发?
以产品为驱动的开发管理。如果产品的需求无法准确把握,或者需求变化很快,那么更适用于敏捷开发。
如果是定制型的产品,需求各方面都已明确,且长期不会变化,那么敏捷开发就不适用了。
敏捷开发的人员要求是什么?
敏捷开发当中强调的是人的重要性。一个敏捷开发团队都是精简的,每个成员都是核心人员,这需要团队意识和专注力。大家都要为同一个事情一起前进,遇到困难一起解决,成功一起分享。
敏捷开发之 5个价值观(团队每个人要有共识的价值观)
专注:由于我们在一段时间内只专注于少数几件事情,所以我们可以很好地合作并获得优质的产出。我们能够更快地交付有价值的事项。
公开:在团队合作中,大家都会表达我们做得如何,以及遇到的障碍。我们发现将担忧说出来是一件好事,因为只有这样才能让这些担忧及时得到解决。
尊重:因为我们在一起工作,分享和成功失败,这有助于培养并加深互相之间的尊重,并帮助彼此成为值得尊重的人。
承诺:由于对自己的命运有更大的掌握,我们会有更坚强的信念获得成功。
勇气:因为我们不得单打独斗,我们能够感受到支持,而且掌握更多的资源。这一切赋予我们勇气去迎接更大的挑战。
敏捷开发要怎么做?
1、我们首先需要确定一个Product Backlog(按优先顺序排列的一个产品需求列表),这个是由Product Owner (产品经理)负责的;
2、Scrum Team(开发团队)根据Product Backlog列表,做工作量的预估和安排;
3、有了Product Backlog列表,我们需要通过 Sprint Planning Meeting(Sprint计划会议) 来从中挑选出一个Story作为本次迭代完成的目标,这个目标的时间周期是1~4个星期,然后把这个Story进行细化,形成一个Sprint Backlog;
4、Sprint Backlog是由Scrum Team去完成的,每个成员根据Sprint Backlog再细化成更小的任务(细到每个任务的工作量在2天内能完成);
5、在Scrum Team完成计划会议上选出的Sprint Backlog过程中,需要进行 Daily Scrum Meeting(每日站立会议),每次会议控制在15分钟左右,每个人都必须发言,并且要向所有成员当面汇报你昨天完成了什么,并且向所有成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出,每个人回答完成后,要走到黑板前更新自己的 Sprint burn down(Sprint燃尽图);
6、做到每日集成,也就是每天都要有一个可以成功编译、并且可以演示的版本;对开发的编码执行测试;编码测试和性能测试在每完成之后都得进行,及时把控开发过程中的问题及时解决。
7、当一个Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,这时,我们要进行 Srpint Review Meeting(演示会议),也称为评审会议,产品负责人和客户都要参加(最好本公司老板也参加),每一个Scrum Team的成员都要向他们演示自己完成的软件产品(这个会议非常重要,一定不能取消);
8、最后就是 Sprint Retrospective Meeting(回顾会议),也称为总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中;
名词解释
Sprint:一次迭代,而一次迭代的周期是1个月时间(即4个星期),也就是我们要把一次迭代的开发内容以最快的速度完成它。
Product Owner:主要负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工作成果。
Scrum Team:主要负责软件产品在Scrum规定流程下进行开发工作,人数控制在5~10人左右,每个成员可能负责不同的技术方面,但要求每成员必须要有很强的自我管理能力,同时具有一定的表达能力;成员可以采用任何工作方式,只要能达到Sprint的目标。
了解了敏捷开发之后,发现真的是一个实用但不容易实操的方法,最后用敏捷开发之 12条敏捷原则作为结尾,对自己身在敏捷不知情的大家作激励。
1、我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。
2、欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌握变化。
3、经常地交付可以工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。
4、业务人员和开发人员必须相互合作,项目中的每一天都不例外。
5、激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。
6、不论团队内外,传递信息效果最好效率也最高的方式是面对面的交流。
7、可工作的软件是进度的首要度量标准。
8、敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。
9、坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。
10、以简洁为本,它是极力减少不必要工作量的艺术。
11、最好的构架、需求和设计出自与自组织团队。
12、团队定期地反思如何能提供成效,并依次调整自身的举止表现。