提升团队的交付能力?如何实践敏捷软件开发。这个是很多团队必须面对的问题,也是让项目经理比较头疼的问题。如果一个项目不能有一个很好的交付,那么项目就是失败的。
下面是一个关于对于提升团队交付能力的一些实践建议或者准则。
这些准则是百度的路宁老师总结,非常感谢路宁老师在百度开发者大会上的分享。
一,制定基于交付物的增量交付计划
上图是路宁老师在演讲中用到软软件编码过程的迭代过程,横轴代表个时间段,每一个代表一周时间,纵轴是代表同一时间正在进行的工作状态。
迭代式模型和瀑布模型的比较:迭代模型,在每一次迭代都会算作一次小的交付,而瀑布式一次上线。灵活性和成功的几率可以明显的看出来。
第二点:组成全功能团队,抛弃内部合同,MRD评审,批量提需求。
这个过程包括:idea产生 -〉预估项目,对需求排优先级 -〉 分析 、验收条件 -〉 迭代启动会 -〉需求墙 -〉故事启动 -〉 开发 -〉mini验收 -〉测试,fix bug -〉show case -〉上线。在这个过程中团队成员要合理组合,不同的阶段组合可能不同。
第三点:建立围绕交付物的合作流程。
敏捷开发社区对交付物完成的定义是: Done, Done!客户满意,上线成功。
第四:制定需求完成和迭代完成的标准
可能会遇到这样的问题:各个开发角色间相互等待,总有几个人容易成为瓶颈。
一个人负责一个模块:如果有一个人离职或者请假,项目就无法继续进行,会造成等待状态,使项目无法按时交付。
所有人都可以做任何部分:这样的好处是造成相互等待的情况减少。
提高单兵作战能力,培养所有人可做所有部分。
第五:善用云基础服务
重复搭建和维护千篇一律的各种平台:项目管理平台,bug跟踪平台,应用部署平台,持续集成平台,版本管理工具。
Project Hosting(git hub)
App Engine(EC2, GAE, Heroku, BAE)
CI Cloud (Travis CI)
Testing Cloud(MTC)
第六:持续集成
后期集成耗时且风险大
由于每次集成消耗大,无法频繁发布。
Jenkins, Team City, go, pulse, Travis CI, BAMBOO ,cruise
第七:自动化验收测试
se
第九,应用single branch分支管理策略
每一个功能一个分支,学习开源项目的分支管理策略。
第十:数据库的版本控制,建立独立的沙盒
dbdeploy.com