敏捷开发的道与术---MPD软件工作坊培训感想(上)
注:由麦思博(MSUP)主办的2013年亚太软件研发团队管理峰会(以下简称MPD大会)分别于6月15及6月22日在北京、上海举办,葡萄城的部分程序员参加了上海的会议,本文是参会的一些感受和心得。
这次MPD软件工作坊培训,最大的收获就是培训者引导你了解了为什么,而不是直接告诉你该怎么做。其实只要清楚目标在哪,无论怎么走都是可以到的。
随便百度一下,我们可以了解到项目管理的定义是“在有限资源限定条件下,实现或超过设定的需求和期望”。一句话形成了项目管理的铁三角,需求是范围,资源包括时间和成本。

这传承多年的“定义”是对的吗?摩托罗拉的铱星计划,计划发射77颗卫星,最后只发射了66颗卫星就“圆满“完成了目标。可谓成本的项目。电影泰坦尼克号拍摄过程多次拖期,预算超出很多,可谓是个彻底失败的项目。
可是结果呢?好像哪里不对?铱星项目发射的卫星现在全成摆设,而泰坦尼克至今仍然是世界的票房神话。
到底哪里不对呢?
我们的项目管理铁三角里忽略了价值。
就是这里了,我们的目标是创造价值,实现共赢。
好,目标在这里了,到达目标的方法有很多,每个人都会找到方法。敏捷有很多的流派,有很多的实践来帮助人们达到这个目标。了解别人怎么做,最重要的是理解别人为什么这么做。
要创造价值,第一问题就是做什么是有价值的。换句话说怎么样才能获得有价值的需求。
来自客户? 客户永远要更快的马车。

客户往往讲不清楚需求,但这些讲不清楚的需求有些甚至是影响整个结构的关键。
来自产品人员的策划? 没人能说明下面的设计放在网页上更受用户喜欢。

来自领导,业务顾问,运营团队?
貌似都不太对。
敏捷项目管理说,来自市场的真实反馈。要得到市场的真实反馈我们需要持续不断的及早的交付有价值的软件。通过市场反馈来获取新的价值。
这点做的就好的应该属于各大互联网公司了。每月每周甚至每天的发布新功能到市场上,搜集用户反馈和反应,除了用户的主动反馈,还包括点击率、浏览量、用户停留时间等访问记录。根据反馈迅速移除没有价值的功能,增强有价值的功能以创造更大的价值。(关于移除功能,甚至关闭一个没有价值的项目,这正是敏捷的魅力所在,它不但可以让项目迅速创造价值,也可以让本不能创造价值的项目迅速失败。个人观点:让一定会失败的项目快速失败可以节省大量的资源,给系统带来的价值甚至更高!但这一点却往往被忽略。认为敏捷必须把项目带向成功,想想铱星项目,如果早早发现没有价值,世界可能都会不一样,至少摩托罗拉公司会不一样吧。)
听起来很美,联系我们的实际却很困难。我们不能立即发布新功能到市场上,我们不能随意的移除没有价值的功能,我们甚至很难从市场获得功能的价值信息。听起来很沮丧。但是,幸运的是,我们知道我们的目标是什么,我们可以千方百计地收集用户反馈,我们可以通过我们的声音影响一些决定,让我们做的事情更有价值。这本身就是双赢的事情,应该会被逐渐的接纳。
回到主题,持续交付很好很强大,但它带来了新的问题。如何保证交付质量,如果交付到市场的软件由于质量问题根本不可用或者几乎不可用,是不可能得到正确反馈的。敏捷答,持续集成,测试驱动开发。
持续集成不说了,我们做的很好。测试驱动开发无论何时何地,一提出都是一个争议性话题,因为这看起来太不敏捷了。一连串的问题,写测试脚本会拖慢进度怎么办?测试脚本的质量又如何保证?测试脚本会对变更产生格外的工作量,怎么办?等等。其实,这也是我心中的疑问。通常得到的答案都是,测试驱动开发产生的工作量都是值得的!好吧,还是那句话,目标在那里,为了实现高质量持续交付的目标我们可以选择的方法很多。加强代码审查,对关键功能,关键模块做自动测试覆盖。甚至包括遗留一些bug但是得到用户反馈之后及时修复。虽然理论上没有测试驱动开发有效,但是我们可以根据自己的实际情况,在投入和收益上找到平衡点,步子小一点也行更不容易跌倒。
综上,敏捷项目的“铁三角“: 
更强调了价值和质量。
当然质量是很重要的,但质量并不是越高越好。比如,招聘网站一两个小时不工作,和证券交易系统一两个小时不工作,对用户的影响肯定是不一样的。所以质量的要求要依赖产品和需求的背景。
不可忽视的是,铁三角里没有提到,但是却在敏捷项目管理中至关重要的一环——人。
价值是人创造的,为人服务的,很多敏捷实践是围绕人展开,试图找到一种(一系列)通用的方法来最大限度的发挥人的能量。例如计划游戏,组建自组织团队,信息公开透明化,集体承诺目标。都是调动团队积极性,消除可能影响团队成员贡献的因素。
对于敏捷实践,林林总总,有如十八般兵器,各门武功,都是名家大师的智慧精华。但是如果只知道招式不知道招式的目的,很容易被人一招打倒的。
敏捷开发的道与术---MPD软件工作坊培训感想(上)的更多相关文章
- 敏捷团队的组织与管理--- MPD软件工作坊培训感想(下)
注:由麦思博(MSUP)主办的2013年亚太软件研发团队管理峰会(以下简称MPD大会)分别于6月15及6月22日在北京.上海举办,葡萄城的部分程序员参加了上海的会议,本文是参会的一些感受和心得. 今年 ...
- 打造研发效率核心竞争力!第40届MPD软件工作坊北京站议题公开
同样是做研发,为什么你的效率总是提不上来?都在寻找创新的技术领域,为何别人总能抢占先机?提升自己的研发竞争力,你都有什么方法? 研发效能已经成为软件企业发展非常核心的竞争力.身处在高速发展的软件研发行 ...
- MPD软件工作坊上海站本周末在上海举行
本周末(5月26日至27日)由麦思博(msup)主办的第39届MPD软件工作坊即将在上海虹桥会议中心举行.本届MPD将继续围绕软件研发领域,邀请了21位技术大咖,从产品运营.团队管理.架构技术.自动化 ...
- 第33届 MPD软件工作坊(南京站)有哪些亮点值得我们参加?
MPD软件工作坊由msup2010年创办,自创办以来,共吸引了万名的软件从业者到场参与.第33届 MPD软件工作坊(南京站)将于12月17-18日在南京召开,大会报名平台:活动家! 快捷报名通道:ht ...
- 【PPT大放送】MPD软件工作坊北京站圆满落幕 深圳站即将开幕!
MPD工作坊深圳站体验票开启啦!文末有彩蛋哦! 7月14日至15日,由麦思博(msup)有限公司举办的第40届MPD软件工作坊在北京国家会议中心举行. 麦思博(msup)有限公司一直专注于软件研发中心 ...
- MPD软件工作坊北京站:技术创新与研发效率带来的前沿思考
在新技术层出不穷.不断迭代的当下,多数企业都在面临技术能力提升,认知升级等问题.面对技术企业的研发环节,为什么你的效率总是提不上来?都在寻找创新的技术领域,为何别人总能抢占先机?提升自己的研发竞争力, ...
- 敏捷开发之道(四)Scrum概述
上次的博文敏捷开发之道(二)极限编程XP和敏捷开发之道(三)极限编程XP续中,我们介绍了一下敏捷开发中的XP开发方法,今天咱们来了解另一个比较流行的敏捷开发方法--Scrum. 1.Scrum简介 S ...
- 敏捷开发之道(二)极限编程XP
上次的博文敏捷开发之道(一)敏捷开发宣言中,我们介绍了一下敏捷开发宣言,在其中,我们了解到了关于敏捷开发的几个重要的价值观.今天我们来了解一个敏捷开发的方法--极限编程XP 1.介绍 极限编程(eXt ...
- 敏捷开发之道(三)极限编程XP续
上次的博文敏捷开发之道(二)极限编程XP中,我们了解了XP的实践中的其中四个,今天我们来一起学习一下剩余的实践. --接上文 5).结对编程 结对编程就是由结对的开发人员使用同一台电脑共同完成一项任务 ...
随机推荐
- 13-01 java StringBuffer类,StringBuilder类
StringBuffer类的构造方法 package cn.itcast_01; /* * 线程安全(多线程讲解) * 安全 -- 同步 -- 数据是安全的 * 不安全 -- 不同步 -- 效率高一些 ...
- 使用代数方程库 Algebra.js解二元一次方程
假设二元一次方程如下: x + y = 11 x - y = 5 解方程如下: <!DOCTYPE html> <html lang="zh-CN"> &l ...
- Javac中的nullcheck
Javac会通过调用引用对象的getClass()来判空,主要有几处: (1)JCMethodInvocation()方法中,如下实例: class A{ class B{} } public cla ...
- vue数组检测更新问题
由于 JavaScript 的限制, Vue 不能检测以下变动的数组: 当你利用索引直接设置一个项时,例如: vm.items[indexOfItem] = newValue 当你修改数组的长度时,例 ...
- java+selenium+maven+testng框架(一)安装搭建
1.安装jdk(注意:需配置环境变量,可自行百度方法); 2.安装eclipse; 3.安装maven(注意:需配置环境变量,可自行百度方法); 4.在eclipse中新建maven项目 新建成功 注 ...
- mysql添加用户、修改权限,修改登录权限ip
1.添加用户 1.1 登录MYSQL: @>mysql -u root -p @>密码 1.2 创建用户: 格式:grant select on 数据库.* to 用户名@登录主机 ide ...
- linux sticky
文件的粘滞位(sticky)位是作什么用的? 普通文件的sticky位会被linux内核忽略, 目录的sticky位表示这个目录里的文件只能被owner和root删除 粘着位(Sticky bit) ...
- Spring 环境与profile(一)——超简用例
什么是profile,为什么需要profile? 在开发时,不同环境(开发.联调.预发.正式等)所需的配置不同导致,如果每改变一个环境就更改配置不但麻烦(修改代码.重新构建)而且容易出错.Spring ...
- 回头再看看babel的实现原理
一.前言 babel在大家的工作中应该没少用,但是为什么它能将ES6转成ES5呢?一个有态度的前端er肯定会想抛开迷雾,看看其中的奥秘. 记得很早前自己有去了解过相关方面的内容,但是时间久远,现在已是 ...
- JS生成指定范围内的随机数(支持随机小数)
直接需要函数的话,直接到文章的最后面找. ============================================================= 转载:https://www.cn ...