探索需求对话
潘加宇 熊妍妍 / 翻译整理
本文刊登在2004年6月《程序员》杂志上,版权所有,未经许可,禁止任何形式的转载,违者必究!
2004年3月19日,温伯格先生应邀在UMLChina通过远程音频与开发人员做了一次有关“探索需求”的交流,很多开发人员都受益颇多。为此,我们翻译整理了这次交流实录,从中我们可以体会到大师的思想。
反复无常的东西不是真正的需求
如何说服客户放弃不切实际的需求?
又一个很好的问题!这就是我刚刚说的。最好的办法是我称为“橙汁测试”的方法。你可以在我的《咨询的秘密》一书中找到这个方法,那本书中说得更详细。基本的思想是:告诉客户,我们能满足他们的需求,但是这需要成本。如果你没有告诉他们所需的成本,他们当然不会知道那些需求是不切实际的。但是,判断需求是否不切实际并非工程师的责任,因为工程师不知道花多少钱才值得他们去做,他们只知道满足需求需要花多少钱。
这里有一个麻烦。我不知道在中国是怎样一个情况,但在美国,有时有这种情况,像一些政府机构,客户实际上并不为软件开发付费。软件开发商只是被告知要为这些客户开发软件,但他们与客户之间并没有金钱交易。这种情况下,想办法让客户放弃不切实际的需求是极度困难的,因为他们开发软件看起来并不需要花钱。这种情况下,你必须找出另一种类型的成本。而大多数情况下,最好的方法是时间。所以,我们可以跟客户这样说:“我们能按照你的要求这样做,但这样可能要使你的项目延期两年,或三个月。”客户会说,“噢,我不能等这么久。”然后他们就会放弃。接下来你就可以和他们协商别的事情了。
另一种方法就是告诉你的客户,因为需求的变化,一些重要的功能性或特性会因此而改变。所以你可以这样对客户说,“如果我们这样做,系统就会变慢,需要三倍的时间来响应。” 如果客户不能容忍一个慢的系统,就可能会放弃他们最初不切实际的需求。
或者你可以这么说,“我们能做,但如果我们做了这个,就不能做别的事情了,你看到底怎么办?”。他们会选择放弃其中一些要求,使需求变得更加切合实际。但要记住这重要的一点:工程师不能判断什么是切合实际的,你只能告诉客户需求的成本,他们会比较看看成本是否值得,然后做出决定。在我的《质量·软件·管理》系列书中,你可以学到这些知识。
这里,有两种图会对你有所帮助。一种图是需求的成本是多少,另一种图是需求的价值值多少。如果你能为客户建立这两种图,说服他们就容易多了。
通常客户会自己选择一些产品,但可能这些产品不能满足项目的需求,怎么办?
你可以用我刚才推荐的方法。通常,产品的花费,或者说购买产品的花费不只是产品本身而已,还有大笔的培训花费,如果产品本身有缺陷,还需要维护的费用,或者它会导致数据库崩溃也是一种花费。上面所说的这些都差不多是一个意思。所以你真的需要向客户提出,他们所作的选择会导致什么样的结果。但最后还是由他们拍板,你最多能告诉他们这种情况很糟糕,极端糟糕。有时你需要这样说,“我不知道怎么做。”他们很可能会因为你不知道怎么做而找别人来做,或者也有可能他们找到其他人告诉你怎么做,这样你兴许会乐意去做。没有人能让你创建一个你不知道怎么做的系统。
如何判断客户有没有告诉我们他们真正的需求?
这涉及到很多个问题。我不敢肯定你问的含义。
情况可以是你的客户只是不知道他们真正的需求是什么。他们确实不知道你能帮他们什么。这是一种情况。另一种情况是他们确实知道,但他们并没有告诉你。他们在对你说谎或他们隐藏了某些东西。这些情况各自都不同,每个案例中的迹象也不同。
如果你的客户并不了解他们的需求是什么,那么你就会常常看到他们反复无常。这个时候你可以通过问问题来使事情更加精确。这是某些人所寻求的形式化过程的一部分。我给你举个例子。
可能最常见的例子就是我们发现某个人说,“我们需要一个快速的系统。”看,我们不知道“快”意味着什么。这个“快”和他们头脑中已有的某些速度有关。对某些人来说快的系统,对另外一些人却是慢的。所以,你必须找出更清楚的事实。你可能需要测试它,因为他们可能不知道。一个好的解决办法是,你可以做一个系统原型,然后改变速度,这样他们可以看到和感受快一些和慢一些的结果。这样你就可以发现真正的需求。
我如何把“探索需求”应用在日常生活中或用来帮助别人?
这里,我想举一些例子,关于我自己是怎样在日常生活中应用“探索需求”的一些原则的。有一些很有意思的事情。我和我太太,已经结婚42年,哦43年了,对美国人来说这可是一段不短的时间。我们在一起非常幸福,但我们,跟大多数婚姻一样,也有一些问题。其中一个持续了数年的问题是,我们决定看场电影,然后一个想看这部电影,而另一个想看另外一部。决定我们要看哪部真是太难了,所以我们开始学会如何了解彼此的需求,来看我们有多想看这部或那部电影,以及我们能为那部或这部电影作出多少妥协。所以我会说,自从我们学会了这种方法后,婚姻幸福多了。
好的,当我和别人交换某物的时候,或者,如果我在买衣服……我以前浪费了很多钱,来买一些衣服,我不喜欢的,或穿起来不合适的。这些年来,我学会了,用那些和判断软件需求同样的技术,来得出自己的需求。所以好多了,我知道了什么是我真正喜欢的和需要的,它也为我节约了不少金钱。
我讲了两个方面,一个给了我幸福的婚姻,另一个帮我省下了不少钱。而且这也同样帮助我照顾我的子女,孙子孙女们。我想这些是生活中真正重要的几个方面。