敏捷开发生态系统系列之一:序言及需求管理生态(客户价值导向-可工作软件-响应变化)

 这是敏捷生态系统系列的第一篇( 之一之二之三之四之五)。

所谓生态系统,就是指互相依赖方能生存的一系列生物。生态系统常常不是单向依赖的,而是互相依赖互相促进。

敏捷开发中的实践也是如此。典型地,当一个实践很难实施时,一定不要认为简单的制度可以保证其实施,而是要思考是什么导致了它的失败。比如每日立会,如果发现大家都不按时开会甚至不开会,马上要做的不是要求大家按时开会+开会迟到给大家买水果+统计每月按时比例+……而是要想一想为什么这些人不按时来,他们一定觉得这个会议不是很重要,会上讲的东西听的东西不能帮助自己的工作,反而耽误时间。进而就能发现会议开不好的根本问题。


敏捷开发中需求管理生态大致如下(请配合插图,黑体字即插图中的元素):

 

客户价值导向是敏捷开发需求管理的主要思想。

☺ 敏捷开发相信密切与客户协作比编写详尽的文档更能弄清楚客户的需求;而利用阶段性的可工作软件外加邀请客户参与评审会,比让客户评审需求文档更容易让客户正确地补充需求和验收产品。

☺ 由于相信变化后的软件一定比变化前的对客户更有价值,所以敏捷崇尚响应变化。提供可工作产品来引导客户变化,可保证客户更能正确翔实地描述变化;而迭代交付则使得重要的、必要的变化可以提前交付,而不是像瀑布模型一样最后才发生。

☺ 通过需求优先级排序和迭代交付,首先可保证重要的需求一定可以交付到客户手中;其次可以保证重要的变更来临时,可以放弃尚未开发的次要需求作为交换;再次可以保证产品负责人(PO)会优先分析重要的需求,不会让它们在模糊状态进入开发。

☺ 只有最高优先级的需求才会进入下一迭代,因此很少有变更比它们更重要,而且这些需求也被较深入地分析过,产品负责人就有信心承诺迭代期内无变更,以换取团队承诺,进而保持交付以可持续的步调发生。

拥抱变化是一种由客户协作、优先级排序、可工作软件等各种实践支撑下的、主动的可控过程,而不是被动地“被变化拥抱”,“迭代期内无变更”和“拥抱变化”的对立统一,必须建立在这些实践的基础上。

客户价值导向-可工作软件-响应变化这三条是需求管理生态的核心内容。下面从一个问题的分析来看需求管理生态的工作原理。

 

“为何客户在评审会上不置可否,只说让我们继续开发一些功能后再说?”

这是一种很常见的场景,简单粗暴的处理方法包括:

1. 若评审会上没有意见,就表明认可了功能。

2. 评审会结束后必须书面验收已经完成的功能。

3. ……

不过这些仅仅是粗暴地执行Scrum的实践,而没有获得Scrum的精神。

仔细分析一下,客户这样做的原因很多,其中一些我们不容易控制,另外一些则相反:

1. 客户送来的代表是个“小角色”,无法替客户决策。

2. 我们的软件在客户眼中不是一个“可工作的”软件,因此他不能或不想太早下结论。

3. ……

针对1这类“不可控”问题,在实际环境中其实都有各种解决方法,只是作用大小而已。比如将每次的评审功能抄送给对方的负责人以引起重视;让功能的最终使用者参与评审等等,具体情况具体分析,这里就不多说了。

针对2这类“可控”问题,可做的就很多了。

什么是可工作软件?在研发人员眼中,可工作软件很容易等同于可运行的软件,“它能跑在我们的测试服务器上,我们还有自动化脚本能自动运行和测试其功能……”但在客户和用户眼中,可工作软件是那种他们现在就可以拿回去用的软件。比如一个Word软件,如果能编辑但是不能分段;能插入标题但是字体一样大;能插入图片但暂时只是一个链接需要双击才能打开……这三样功能都是至关重要的功能,但把它们临时凑在一起的软件,并不能让用户真正使用起来。还不如做一个“暂时只能编辑,不过可以分段、缩进,适合写简单的无复杂格式的文本,比如私人邮件(现在Outlook中还有个选项是用Word编辑邮件)”,看到这样一个软件,尽管客户不会接受这就是他们最终得到的产品,但是却可以理解在这样的场景中,这个软件到底好不好用,如果要改进改进哪里等等。

或许为了制造这个软件,我们一定程度上打破了优先级排序(“插入标题”比“缩进”要来得重要),但却使得“可交付”和“客户评审”成为现实。其实从这个角度看,我们反而在以客户价值驱动的方式生产着软件,也就是说“可运行软件”要从“客户价值驱动”的角度来定义

好了,要解决这个问题答案就出来了:我们多半会把Product Backlog划分为若干故事群,每个故事群大致可以完整交付;我们提前让客户参与制定故事群开发的排序工作,这样客户就知道什么时候将发布什么功能,以及自己来评审什么功能;在完整地看到一组功能后,客户更容易得出“这一切是否可行”的结论;如果他们愿意,还可以提前部署上试用一下……


个人感觉在应用敏捷实践时,虽然不能迷信其普适性,但也千万别在遇到挫折的时候马上否定,或将问题归结为文化和公司环境;作为开发和管理人员,我们极有可能少或多做了什么事情。

有读者在图中的右侧可能看到了“迭代期内不变更-团队承诺”这条很重要的生态线,将在以后的“计划跟踪”中提到。 

 

点击下载免费的敏捷开发教材:《火星人敏捷开发手册

 

目录   译者序   第2版前言   第1版前言   第0章不可知和不可说   0.1和解析体验相关的问题   0.1.1解析模式的冲突   0.1.2检测解析模式   0.1.3思考不准确的思想   0.2沟通的不可能性   0.2.1内部重新组织   0.2.2触及共享体验   0.2.3管理不完美的沟通   0.3聆听的三个层次   0.3.1三个层次和方法集   0.3.2三个层次与本书   0.3.3守-破-离   0.4那么,明天我做什么   第0A章不可知和不可说:演进   0A.1沟通和共享的体验   0A.2守-破-离   第1章创造和沟通的合作博弈   1.1软件和诗歌   1.2软件与博弈   1.2.1博弈的类型   1.2.2软件与攀岩   1.2.3创造和沟通的博弈   1.2.4软件与工程化   1.2.5软件与模型构建   1.3再论合作博弈   1.3.1程序员成为沟通专家   1.3.2更快地博弈   1.3.3标识物和道具   1.3.4减少回报   1.3.5对于首要目标的充分度   1.3.6对于积淀的充分度   1.3.7博弈中的博弈   1.3.8开放源码开发   1.4这对我意味着什么   第1A章创造和沟通的合作博弈:演进   1A.1沼泽游戏   1A.2合作中的竞争   1A.3其他领域的合作博弈   1A.4软件工程的重建   1A.4.1这一词汇从哪里来   1A.4.2我们从哪里走错了   1A.4.3重建软件工程   1A.4.4技艺   1A.4.5合作博弈   1A.4.6精益制造   1A.4.7重建后的软件工程   1A.4.8其他工程化中的协作   第2章个人   2.1人是古怪的   2.1.1寻找特征函数   2.1.2古怪性格的元素   2.1.3不可避免的多样性   2.1.4技术的作用   2.1.5相互冲突的共同点   2.2克服失败模式   2.2.1犯错误   2.2.2宁可失败也要选择保守   2.2.3创新而不研究   2.2.4不能始终如一的习惯动物   2.2.5使用纪律和容忍来应对   2.3以一些更好的方式工作   2.3.1具体化   2.3.2实物   2.3.3在某些东西的基础上进行修改   2.3.4观察和聆听   2.3.5支持专注和沟通   2.3.6工作分配要与个性相匹配   2.3.7天赋   2.3.8奖励要能保留乐趣   2.3.9组合奖励   2.3.10反馈   2.4利用成功模式   2.4.1善于四处寻找   2.4.2人们学习   2.4.3可塑性   2.4.4贡献和采取主动   2.4.5组合成功模式   2.4.6英雄也是普通人   2.5明天我该做什么   第2A章个人:演进   2A.1策略平衡   第3章团队的沟通与合作   3.1信息的对流   3.1.1延迟和机会损失成本   3.1.2尔格-秒   3.1.3渗透式沟通   3.1.4穿堂风   3.1.5信息辐射源   3.1.6热空气理论的应用   3.2跨越沟通的鸿沟   3.2.1沟通的形态   3.2.2去掉某些形态所产生的影响   3.2.3利用各种形态   3.2.4黏度与跨越空间的鸿沟   3.3团队就是集体   3.3.1友善和冲突   3.3.2工作时间的公民意识   3.3.3敌意的XP与友善的XP   3.3.4使用胜利来建立“团队”   3.3.5团队文化与亚文化   3.4团队就是生态系统   3.5我明天该做什么   第3A章团队:演进   3A.1一个修订后的办公室布局样本   第4章方法集   4.1一个交付软件生态系统   4.2方法集中的概念   4.2.1结构术语   4.2.2范围   4.2.3概念术语   4.2.4发布一个方法集   4.3方法集的设计原则   4.3.1常见设计错误   4.3.2在方法集上成功的项目   4.3.3与作者的相关性   4.3.4七条原则   4.4细看XP   4.4.1XP简介   4.4.2剖析XP   4.4.3调整XP   4.5到底为什么使用方法集   4.5.1方法集解决什么问题   4.5.2如何评估一个方法集   4.6明天我应该做什么   第4A章方法集:演进   4A.1方法集与策略   4A.2组织级的方法集   4A.3过程就是循环   4A.4更简单地描述方法集   第5章敏捷与自适应   5.1轻但足够   5.1.1刚好足够   5.1.2对于编制文档的建议   5.2敏捷   5.2.1最佳击球点   5.2.2虚拟团队的麻烦   5.3变得自适应   5.3.1不厌其烦地进行反思   5.3.2方法集成长技术   5.3.3反思研讨会技术   5.4明天我该做什么   第5A章敏捷与自适应:演进   5A.1对于寓意的误解   5A.1.1迭代必须简短   5A.1.2敏捷团队必须驻扎在一起   5A.1.3敏捷团队不需要计划   5A.1.4架构已死;重构是你全部所需要的   5A.1.5我们不需要什么经理   5A.1.6敏捷开发在纪律上要求很低   5A.1.7敏捷只适合最优秀的开发人员   5A.1.8敏捷是既老又新的、失败的、没有尝试过的   5A.2敏捷方法集的演进   5A.2.1XP第2版   5A.2.2Scrum   5A.2.3实用主义和无名的   5A.2.4可预测、计划驱动和其他中心调整   5A.2.5约束理论   5A.2.6精益开发   5A.3新的方法集话题   5A.3.1敏捷项目管理   5A.3.2测试   5A.3.3用户体验设计   5A.3.4规划管控、Burn图和系统工程   5A.3.5用例和用户故事   5A.4经久不绝的问题   5A.4.1最佳击球点和下降   5A.4.2固定价格、固定范围的合同   5A.4.3敏捷、CMMI和ISO9001   5A.4.4何时停止建模   5A.4.5高科技/高接触的工具箱   5A.4.6敏捷的中心   5A.4.7你有多敏捷   5A.4.8引入敏捷   5A.5软件开发之外的敏捷   5A.5.1项目组合管理   5A.5.2客户关系   5A.5.3合同   5A.5.4将变更引入组织   5A.5.5程序员读哈佛商业周刊   5A.5.6建造房屋   5A.5.7机场建设   5A.5.8图书出版   5A.5.9会议组织和敏捷模型的限制   第6章Crystal方法集   6.1对Crystal家族塑形   6.1.1核心Crystal元素   6.2CrystalClear   6.2.1CrystalClear的简要描述   6.2.2CrystalClear的反思   6.3CrystalOrange   6.3.1CrystalOrange的简要描述   6.3.2CrystalOrange的反思   6.4CrystalOrangeWeb   6.4.1CrystalOrangeWeb的简要描述   6.4.2CrystalOrangeWeb的反思   6.5明天我该做什么   第6A章Crystal方法集:演进   6A.1Crystal基因代码   6A.1.1合作博弈的理念   6A.1.2方法集的重点   6A.1.3方法集设计原则   6A.1.4高度成功的项目的7个特性   6A.1.5技术与选择   6A.1.6样本方法集设计   6A.2CrystalClear   6A.3把CrystalClear扩展到Yellow   附录A敏捷软件开发宣言   附录Aa敏捷软件开发宣言和相互依赖声明   附录BNaur、Ehn、宫本武藏   附录BaNaur、Ehn、宫本武藏:演进   附录C后记   参考文献
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值