`
ruilin215
  • 浏览: 1106847 次
  • 性别: Icon_minigender_2
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

【探索需求对话2】反复无常的东西不是真正的需求

阅读更多

探索需求对话<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

潘加宇 熊妍妍 / 翻译整理

本文刊登在2004年6月《程序员》杂志上,版权所有,未经许可,禁止任何形式的转载,违者必究!

2004319日,温伯格先生应邀在UMLChina通过远程音频与开发人员做了一次有关“探索需求”的交流,很多开发人员都受益颇多。为此,我们翻译整理了这次交流实录,从中我们可以体会到大师的思想。

反复无常的东西不是真正的需求

如何说服客户放弃不切实际的需求?

又一个很好的问题!这就是我刚刚说的。最好的办法是我称为“橙汁测试”的方法。你可以在我的《咨询的秘密》一书中找到这个方法,那本书中说得更详细。基本的思想是:告诉客户,我们能满足他们的需求,但是这需要成本。如果你没有告诉他们所需的成本,他们当然不会知道那些需求是不切实际的。但是,判断需求是否不切实际并非工程师的责任,因为工程师不知道花多少钱才值得他们去做,他们只知道满足需求需要花多少钱。

这里有一个麻烦。我不知道在中国是怎样一个情况,但在美国,有时有这种情况,像一些政府机构,客户实际上并不为软件开发付费。软件开发商只是被告知要为这些客户开发软件,但他们与客户之间并没有金钱交易。这种情况下,想办法让客户放弃不切实际的需求是极度困难的,因为他们开发软件看起来并不需要花钱。这种情况下,你必须找出另一种类型的成本。而大多数情况下,最好的方法是时间。所以,我们可以跟客户这样说:“我们能按照你的要求这样做,但这样可能要使你的项目延期两年,或三个月。”客户会说,“噢,我不能等这么久。”然后他们就会放弃。接下来你就可以和他们协商别的事情了。

另一种方法就是告诉你的客户,因为需求的变化,一些重要的功能性或特性会因此而改变。所以你可以这样对客户说,“如果我们这样做,系统就会变慢,需要三倍的时间来响应。” 如果客户不能容忍一个慢的系统,就可能会放弃他们最初不切实际的需求。

或者你可以这么说,“我们能做,但如果我们做了这个,就不能做别的事情了,你看到底怎么办?”。他们会选择放弃其中一些要求,使需求变得更加切合实际。但要记住这重要的一点:工程师不能判断什么是切合实际的,你只能告诉客户需求的成本,他们会比较看看成本是否值得,然后做出决定。在我的《质量·软件·管理》系列书中,你可以学到这些知识。

这里,有两种图会对你有所帮助。一种图是需求的成本是多少,另一种图是需求的价值值多少。如果你能为客户建立这两种图,说服他们就容易多了。

通常客户会自己选择一些产品,但可能这些产品不能满足项目的需求,怎么办?

你可以用我刚才推荐的方法。通常,产品的花费,或者说购买产品的花费不只是产品本身而已,还有大笔的培训花费,如果产品本身有缺陷,还需要维护的费用,或者它会导致数据库崩溃也是一种花费。上面所说的这些都差不多是一个意思。所以你真的需要向客户提出,他们所作的选择会导致什么样的结果。但最后还是由他们拍板,你最多能告诉他们这种情况很糟糕,极端糟糕。有时你需要这样说,“我不知道怎么做。”他们很可能会因为你不知道怎么做而找别人来做,或者也有可能他们找到其他人告诉你怎么做,这样你兴许会乐意去做。没有人能让你创建一个你不知道怎么做的系统。

如何判断客户有没有告诉我们他们真正的需求?

这涉及到很多个问题。我不敢肯定你问的含义。

情况可以是你的客户只是不知道他们真正的需求是什么。他们确实不知道你能帮他们什么。这是一种情况。另一种情况是他们确实知道,但他们并没有告诉你。他们在对你说谎或他们隐藏了某些东西。这些情况各自都不同,每个案例中的迹象也不同。

如果你的客户并不了解他们的需求是什么,那么你就会常常看到他们反复无常。这个时候你可以通过问问题来使事情更加精确。这是某些人所寻求的形式化过程的一部分。我给你举个例子。

可能最常见的例子就是我们发现某个人说,“我们需要一个快速的系统。”看,我们不知道“快”意味着什么。这个“快”和他们头脑中已有的某些速度有关。对某些人来说快的系统,对另外一些人却是慢的。所以,你必须找出更清楚的事实。你可能需要测试它,因为他们可能不知道。一个好的解决办法是,你可以做一个系统原型,然后改变速度,这样他们可以看到和感受快一些和慢一些的结果。这样你就可以发现真正的需求。

我如何把“探索需求”应用在日常生活中或用来帮助别人?

这里,我想举一些例子,关于我自己是怎样在日常生活中应用“探索需求”的一些原则的。有一些很有意思的事情。我和我太太,已经结婚42年,哦43年了,对美国人来说这可是一段不短的时间。我们在一起非常幸福,但我们,跟大多数婚姻一样,也有一些问题。其中一个持续了数年的问题是,我们决定看场电影,然后一个想看这部电影,而另一个想看另外一部。决定我们要看哪部真是太难了,所以我们开始学会如何了解彼此的需求,来看我们有多想看这部或那部电影,以及我们能为那部或这部电影作出多少妥协。所以我会说,自从我们学会了这种方法后,婚姻幸福多了。

好的,当我和别人交换某物的时候,或者,如果我在买衣服……我以前浪费了很多钱,来买一些衣服,我不喜欢的,或穿起来不合适的。这些年来,我学会了,用那些和判断软件需求同样的技术,来得出自己的需求。所以好多了,我知道了什么是我真正喜欢的和需要的,它也为我节约了不少金钱。

我讲了两个方面,一个给了我幸福的婚姻,另一个帮我省下了不少钱。而且这也同样帮助我照顾我的子女,孙子孙女们。我想这些是生活中真正重要的几个方面。

分享到:
评论

相关推荐

    CPU:反复无常.pdf

    CPU:反复无常.pdf

    最简单的Windows系统登录密码解救方法

    最简单的Windows系统登录密码解救方法最简单的Windows系统登录密码解救方法最简单的Windows系统登录密码解救方法

    职场竞争力PPT:拿什么来跟你竞争?.rar

    自我超越其次是一个连续的创造和成长过程,一个人只有让自己今天比昨天好、让自己明天比今天好,而且让这种进步成为发生在每年、每月、每天,成为终身的自觉行为,这才是真正意义上的自我超越。 要树立高标准。...

    测试之颠,必先利其器

    时至今日想起此话很有道理,在我们的测试工作中又何尝不是呢!只是对其“器”即所谓的工具的范围更广了而也。 在纷繁复杂和反复无常的测试工作中其所用的“器”那是至关重要的,其器可以从两方面来讲:一方面是...

    Glyphs-Tutorials-JP-unofficial:Glyphs.app教程的非官方日语翻译

    更新非常少见或反复无常,但是有计划增加内容,主要是根据翻译人员的需求。它是在尽最大努力的基础上进行操作的,其内容可能与官方网站上的最新版本有所不同。内容可能包含误译。欢迎提出任何建议或PR进行更正。 ...

    JFXsample:一个简单的 JavaFX 演示。 另一部分->

    比如我这个项目,逻辑编码一气呵成(不考虑反复无常的需求变更),但是GUI部分就没那么快搞定了,简单一个各个控件auto resize,我就查了半天的资料并不断尝试,才不完美的解决。(事实上完美解决复杂UI的auto r

    如何利用伺服自动化实现成本降低和产能化?

    木材加工机器制造商采用伺服控制获得了更高的精度和产能。一块2x4英尺大小的木料是建筑工业的基本商品,这也是为什么木材加工业的开始使用复杂的自动化...要在价格波动反复无常的建筑行业里保持稳定利润率所带来的压力

    纯JS半透明Tip效果代码

    Test p{text-indent:2em} 链接 这是文章标题1,文字是不透明的 有提示文字 这是文章标题2,文字是不透明的 教育是开启完全不同未来大门的...”青春期男孩是最反复无常并最具暴力的了。 美国一半的暴力犯罪是由

    微软创建NT和未来的夺命狂奔:观止

    集中表现了卡特勒的反复无常、激励和鞭策团队的能力,色彩鲜明地描述了这个巨大企业的人间戏剧,揭示了他们的压力、失望以及最终胜利。而胜利来自于战胜没完没了的最后期限,与对手的竞争,与不可避免又无处不在的...

    Show Stopper

    集中表现了卡特勒的反复无常、激励和鞭策团队的能力,色彩鲜明地描述了这个巨大企业的人间戏剧,揭示了他们的压力、失望以及最终胜利。而胜利来自于战胜没完没了的最后期限,与对手的竞争,与不可避免又无处不在的...

    agile_methods:不同敏捷方法的可视化

    此处运行的敏捷实践的可视化: (如果它似乎在整个屏幕上绘制垃圾,请刷新页面。稍后会详细介绍。... 这是任意的,但不是反复无常的。 我相信我选择了合理的文件: XP: : 敏捷宣言: ://agilemanifesto

    FlutterCourse:颤抖的课程

    FlutterCourse 反复无常的课程。 修改Linha 5 para estudo de REBASE tesasdnv错误

    观止--微软创建NT和未来的夺命狂奔Show Stopper The Breakneck Race To Create Windows Nt And The Next Generation At Microsoft.pdf

    集中表现了卡特勒的反复无常、激励和鞭策团队的能力,色彩鲜明地描述了这个巨大企业的人间戏剧,揭示了他们的压力、失望以及最终胜利。而胜利来自于战胜没完没了的最后期限,与对手的竞争,与不可避免又无处不在的...

    react-course-udemy:在学习带有udemy课程的React时实现的一些代码

    React过程的反复无常在学习带有udemy课程的React时实现的一些代码

    node-por-hacer:这是Node中的命令应用程序,用于管理要完成的任务

    命令应用 这是从反复无常的“从零到专家”节点过程的练习 记住要安装Node软件包 npm install

    弹性理论和棘手的问题-研究论文

    然而,在将近 50 年后重新阅读里特尔和韦伯,将社会反复无常和生态泛滥的混合体分开,对他们来说,这些混合在一起构成了解决社会问题的“邪恶”,这变得很有用。 社会反复无常——社会优先事项和欲望既可以随着时间...

    嵌入式系统/ARM技术中的volatile在多线程中的应用

     volatile在词典中的意思是易变的,反复无常的。它在我们的程序设计中常常用到的。volatile是一个关键字,用来修饰一个变量,告诉编译器在编译的时候不要对其进行优化,在操作寄存器和多线程中这种用法是最常见的。...

    Gratipay无处不在「Gratipay Everywhere」-crx插件

    抵押是“反复无常”的。 免费支付是公开的。 您提供的总金额和收到的总金额是公开的。 等式两边的参与者的参与都会得到公开奖励。 此扩展程序有什么作用? 该扩展程序将“ Gratipay”按钮添加到您的收藏夹站点。 ...

    flatware:用于 Tabletop.js 的 Google 电子表格的 S3 缓存

    Flatware在您和 Google 电子表格之间提供了一个微小的 S3 缓冲区,保护您免于停机、延迟和山景城可怕的反复无常。 它旨在与一起使用。 替代方法可以在 Tabletop.js 的/caching目录中找到。 整个社邦 第一步:并安装...

Global site tag (gtag.js) - Google Analytics