解释传统与敏捷方法最贴切的故事:大象与猴子

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
很久以来我都对传统的软件工程方法和盛行的敏捷方法的联系与区别郁闷不已,因为每一个领域都是那么庞大,作为一个非专业人士,要能清楚地把握其中的关系,确实不是件容易的事情,直到我看到下面的这个故事(摘自《平衡敏捷与规范》Balancing Agility and Discipline: A Guide for the Perplexed,邓辉 孙鸣译 清华大学出版社)。在敲字的过程中我自己对一些名词对照着两个软件开发方法中的常用概念进行了注解,不当之处,还请大家指正。
 
很久以前,在一片充满隐喻的土地上,住着一头大象(喻传统开发方法)。很多年来,这头忠实的大象一直都是他所居住村庄主要的食物采集者,并且非常清楚这个村庄需要什么(喻工程前的事先计划性)。他在丛林中修建了一条路(喻最佳实践),这条路总是能指引他找到最好的根茎、蔬菜、坚果和水果等食物(喻项目的功能)。他知道哪种水果用鼻子可以够得着,也知道哪种水果需要鼻子去晃动才能摘取。他很强壮,能够一次带回足够好几天吃的食物,所以他总是预先估计这个村庄的需要(喻典型的项目需求),并提供恰当的供给。他恪尽职守,整个村庄的人都很感激他,并认为他的工作很有价值。
 
唉!就像生活和寓言中常常发生的那样,情况发生了变化(喻需求变更)。村庄里的厨师(喻项目干系人)想要一些奇特、罕见的原料来烹饪(喻个性化需求)。这些原料大象曾经听说过,但是不在他每天要走的路上(喻传统工程方法不适合涉及的领域)。他还在为存储那些无从需要的食物(喻开始的需求已经过时)疲于奔命,却没有时间去修建新的道路以满足新的需求。村庄里的人渐渐地对这头无法满足他们需求(可以理解为RUP等传统方法不适合网站开发)、越来越气馁的大象失去了耐心。
 
与此同时,附近村庄有一只猴子(喻敏捷方法)做着和这头大象类似的工作。但是,和这头大象不同,这只敏捷的小猴在这片丛林中快速地穿梭(喻XP等编程方法),采摘它所看到的果实。他只去寻找那些挂得很低的果实(喻无法满足企业级应用)并迅速把它们送回到厨师那里。这只猴子不像大象那样依赖于一条久经考验的道路,他依赖于自己的记忆和本能去找到食物,并且只带回当天所需要的食物(喻迭代编程、每日构建等)。有时,他会跑出去寻找那些日益珍奇的食物(喻新奇的功能,如AJAX功能),偶尔还会迷路(喻新的方法太多)。但事实证明,他的速度和敏捷完全能胜任村庄分派给他的任务。和那头大象一样,他也颇受爱戴(喻在自己的领域内,如Web开发)。
 
很不幸,这只猴子的生活也发生了变化。他所生活的村庄一天天地扩大起来(喻企业级Web应用)。这只小猴需要满足太多的需求,以至于他总是疲于奔命,努力记住在每个地方的所有需要。他不得不来来回回地跑很多次,因为他没有足够的力量一次运回人们需要的所有东西(喻功能太多)。同样地,这个村庄渐渐对这只猴子失去了耐心,而这只猴子也开始怀疑自己是否能够胜任这项工作。
 
碰巧有一天,这只疲倦的猴子遇到了那头气馁的大象。这只试图在背负重物的情况下快速奔跑的猴子发现大象背上的筐可以装得下那么多的食物。而大象也被猴子的速度震撼了(喻双方开始正视对方的优点),他能跑得那么远,他能那么轻而易举地拿到大象竭尽全力也无法获得的食物。这两只动物,虽然都以自己的技能而自豪(喻从前的论战),但还是承认了对方在某些方面技高一筹。
 
大象和猴子认识到一起工作的好处(喻一个控制大的流程,一个处理软件开发细节),于是决定联合起来。猴子利用他的敏捷去满足对于远距离水果的新需求,并让大象带回到他的村庄。大象则把充足的食物运到猴子的村庄去满足那里逐渐增多的需要。虽然他们花了一些时间去找出协作的方法(喻两个不同方法之间的磨合),但是很快他们就能够很好地满足两个村庄的需要了,从此,他们过着快乐的生活,彼此互相信任,从此丰衣足食的村民们又开始看重他们了(喻实用才是第一:))!
大象装进冰箱——百人团队敏捷实践 年初加入国家Top2的ERP供应商,担任高级产品经理, 负责敏捷转型中的需求端改造。 经过一段时间的打磨提炼,做出了不少成果,现将一些比较成熟的经验分享出来: 一、用户故事plus 1、ERP需求特点 初入公司,盘点了过去一年的所有需求清单,发现客户对软件的需求类型,主要集中于以下两类: 某个业务节点的功能优化 对第三方的数据对接接口 同时,我观察了这两种需求的处理流程 发现: 需求在向研发人员传递的过程中,方向极易偏离 原因在于: 需求调研方: 未能准确识别用户角色、工 阅读详情

相关推荐

敏捷scrum 三三四_Scrum房间中的3头大象,第2部分

敏捷scrum 三三四 关于NOBODY喜欢谈论的问题 (THINGS ABOUT SCRUM THAT NOBODY LIKES TO TALK ABOUT) This is Part 2 of the article “3 Elephants In the Scrum Room”. 这是文章“ Scrum会议室中的3头大象 ”的第2部分。 If the product you are wor...

weixin_26717681的博客 498

咸鱼笔记:《实用软件工程》第一、二章课后简答题及参考答案

文章目录前言第一部分 前言 作为程序员来说,软件工程这门课是必不可少的学习课程之一,软件工程可以给我们提供完整符合标准的软件开发流程学习,可以更好的 第一部分 第一章 软件工程概述 结合你之前的工程经验以及任正非致员工信,谈谈你对软件工程的看法。 随着科技的发展,软件开发的需求量以及开发规模都在不断地增大,规模越大的软件工程,各方面需要考虑的问题就越多,所耗费的人力物力就越大。我认为软件工程的作用就是运用一系列科学的方法,在满足各方面需求并保证软件效率的前提下,统筹管理好开发过程的每一步,以少的人力物

Orangecola的博客 1万+

如何继续执行之前失败的maven build

文章目录问题描述问题解决 问题描述 执行下面maven build 的过程,因为某个模块的test case 没有通过,导致整个项目build failed。 mvn clean install -DskipTests=false 因为项目比较大,整体编译时间比较长,那些已经编译通过的模块不想再一次编译了。 当我把没通过的test case修正后,如果继续接着上次的failed的模块继续整个编译过程? 问题解决 使用命令: 格式: mvn <goals> -rf :<moduleName

拾年一剑 的专栏 3815

软件工程学,第二节

鄙人收集了一些第二节的有关简述题目,供大家参考,如果错误,望大家指出。问:如何理解软件生命周期的内在特征 答:软件产品的生命周期是指从设计该产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试验收、投入使用以及产品版本的不断更新,到终该差评被市场淘汰的全过程。软件生命周期这个概念从时间的角度将软件的开发和维护的复杂过程分解为了若干个阶段,每个阶段都完成特定的相对独立的任务。由于每个阶

光光的小屋 6430

解释传统敏捷方法贴切故事大象猴子(感想)

今天看了篇文章,转载如下:很久以来我都对传统的软件工程方法和盛行的敏捷方法的联系区别郁闷不已,因为每一个领域都是那么庞大,作为一个非专业人士,要能清楚地把握其中的关系,确实不是件容易的事情,直到我看到下面的这个故事(摘自《平衡敏捷规范》Balancing Agility and Discipline: A Guide for the Perplexed,邓辉 孙鸣译 清华大学出版社)。在敲字的...

weixin_34192732的博客 112

主题阅读-敏捷软件开发

我越是关注过程改进和CMMI,也就越渴望敏捷方法能够对CMMI的某些方面做些有益的补充。敏捷方法更加强调纪律,沟通和交互,肯定很强调了人的作用,有些方面肯定是CMMI所欠缺的,但是和CMMI一定不是对立和矛盾的。在之前,敏捷提出过四项原则,即: 较之于过程和工具,应更注重人及其交互的价值 较之面面俱到文档,应更注重可运行软件的价值 较之合同谈判,应更注重跟客户合作的价值 较...

pzmayf的专栏 200

敏捷开发传统开发方式的比较

今日雾霾,忙于赶作业。分享一篇关于敏捷开发的好文,希望经理爸爸们喜欢~ 原PO地址:https://www.cnblogs.com/yt96/p/5983265.html 敏捷开发的起源 在90年代末期,传统软件开发的方式因为其繁杂的过程,以及对文档的过于严格的要求,造成了很大程度上的效率下降,也就是人们所说的“重型化危机”。因为这一原因,人们开始反思传统方法的利弊,并对其弊端进行了

jason9313的博客 6056

敏捷开发传统开发的区别

敏捷方法传统方法的区别联系   首先,说一下传统开发的方式流程,传统开发也就是本文开始所说的来自于工程学的软件开发方式,是一种瀑布式的流程,在工程的起始阶段,进行详尽的需求调研,根据需求进行完全的架构设计,之后进入开发过程,在开发过程中,不再进行设计层面的事情,不再处理需求变化的问题,在这个阶段的任务就是对前期设计的功能实现,然后是测试,部署等等。   其次,说一下敏捷开发的方式流程

sghdls的专栏 9802

第2章 传统敏捷方法

2.1  传统泛瀑布软件开发模式 2.1.1  瀑布模式 1.瀑布模式简介 2.瀑布模式特色 3.瀑布模式缺点 2.1.2  渐增模式 1.渐增模式简介 2.渐增模式特色 3.渐增模式缺点 2.1.3  雏形模式 1.雏形模式简介 2.雏形模式特色 3.雏形模式缺点 2.1.4  螺旋模式 1.螺旋模式简介 2.螺旋模式特色 3.螺旋模式缺点 2.1.5  统一开...

weixin_33827590的博客 185

敏捷方法的4个基本特征

  2001年在软件工程界首次出现“敏捷”这个名词,17个过程方法学家举行了一个讨论会。发现他们的“轻量级”的方法有很多共同的地方,因此一致同意把这些方法统称为“敏捷”的方法。并且成立了个叫敏捷联盟的组织,还定下了所谓的“敏捷宣言”。从此,越来越多的人了解到敏捷方法。         敏捷方法有一些共同的特征。其中有两个主要的特征是:轻量和简单。敏捷方法论包含少的流程和文档,减少正式性。目的是...

lh200808的专栏 548

项目管理什么时候用敏捷,什么时候用传统方法?​

采用敏捷项目管理的人员通常会担忧以下问题: ▪ 敏捷不适用于大而复杂的项目。 ▪ 敏捷太过开放,我们无法预测成本。这是“批准的范围蠕动”。 ▪ 敏捷太过关注“技术人员”。 ▪ 软件开发人员客户的交流不在同一频道上。 ▪ 客户没有时间参计划。 ▪ 我们不希望客户看到我们的丑事。 ▪ 这个“团队合作”的做法听起来不实用。 ▪ 日常会议?我们的员工会觉得自己暴露在显微镜之下。 ▪ 敏捷过于僵化,抑制个人创造力。 事实是,上述担忧合情合理。无论使用敏捷还是瀑布,项目团队如果没有注意到上述问题...

592
上一篇: 异国也有欢乐:北京Linux User Group探访实录
下一篇: 媒体的关键还是在于“软件”(人与规范)
futurelight
博客等级 码龄25年 358粉丝 229原创
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值