如果你根本不知道自己在讨论什么,那么对其强求精确是毫无意义的。 ——约翰·冯·诺依曼(John von Neumann)
开发是把人们的期望转化成一种能够满足其期望的产品的过程。本书 的讨论围绕着需求过程——即在开发中人们试图发现其期望的东西那部分。
为了理解这一过程,读者应把注意力集中在五个关键词语上:期望、产 品、人们、试图和发现。
首先,我们来看“期望”。有些读者更愿意我们说“试图发现其需要的东西”,但是我们找不出哪种人们需要的东西不是他们所期望的。除此之外,人们并不经常购买他们所需要的东西,却常常期望他们所买的东西,即使这 种期望仅仅是短暂的。然而,我们确实观察到通过澄清人们的期望,他们有时能够阐明什么是其真正需要的,而什么并不需要。
我们用“产品”这个词来表示那些试图满足复合的一系列期望的产物。复合的期望意味着它们来自于许多人。当我们为满足自己的期望而创建一个产品时——比如说,建一个花园或是做一个书柜什么的——我们常常不需要明确的需求过程。我们只是一边做一边看,在适当的地方做一些调整,直到我们自己满意为止。
但是“人们”可能包括许多不同的人,而且找到谁是这些“人们”是需求过程的一个主要的部分。当牵涉的人数很多,或是产品规模较大时,用于发现个人需求的这种反复的过程很容易证明是既拖沓,又昂贵,而且还有太多风险。
“试图”怎么解释呢?如果我们正在写一本书,难道不应该是更可靠和更积极吗?难道我们不应该保证其结果吗?是的,在这本书中我们使用的需求技巧将帮助我们的客户开发所有类型的产品——计算机硬件、计算机软件、汽车、家具、建筑物、革新的消费产品、书籍、电影、机构、训练课程和研究计划等。没有读者要回自己买书的钱,但是我们无法证明没有客户不会,因为我们不知道如何把产品开发做成一门精确的学科。
在和我们一起工作之前,我们的许多客户都希望产品开发是一门精确的学科。他们中的大多数属于软件业——一个备受这种毫无根据的白日梦折磨的行业。我们乐意引用约翰·冯·诺依曼的话,因为我们的许多客户认为他是软件之父。他们关注到他的名言:“如果你根本不知道自己在讨论什么,那么对其强求精确是毫无意义的。”
如果人们不知道他们想要什么,那么无论什么开发过程——不管有多么精确、多么聪明或多么有效率——都不能使他们满意。这就是为什么我们要做需求工作的缘故——只有这样,我们才不会设计出人们不需要的系统。 效果总是置于效率之前的。但即使效率是你的热心关注的,通向高效率开发的最重要的方法是在第一时间排除那些没有人想要的产品。另一种方法则如下所说:
这使我们用“发现”这个苛刻的词语。在本书中,我们设法帮助人们发现那些真正值得做的事情。
美国第34任总统艾森豪威尔上将曾经说过:“计划本身什么都不是,而编制计划的过程就是一切。”我们认同这样的说法,并把它推广到需求过程:或用另一种方式表达:这就解释了我们的书名:探索需求。比如,藉由本书中一些理论的帮助,我们辛苦地获得了一些定义文字,而数据字典就是用来保存这些定义的方法。然而,实际上几乎没有人会去读这些数据字典或那些在需求过程中开发出来的文档。这一观察结果让很多人为之烦恼,不过我们却并不如此,因为我们相信:
如果考察人们如何真正开发系统,你会看到开发需求的过程实际上就是发展一批满足以下条件的人的过程:
l. 理解需求
2.(大多数情况下)参与这个项目
3.知道如何有效地像一个团队一样工作
我们相信如果上述条件中的任何一个没有满足,那么这个项目将有可能失败。当然,一个产品开发项目可能失败的原因非常多,而且有了很多书籍来阐述避免那些缺陷的方法。而本书的内容集中在需求过程的以下三个人性的方面,它们既是非常重要的,却恰恰也是被人们所忽视的。
1. 在所有参与者中开发一种对需求的可靠的理解。
2. 开发一种项目的团队工作期望。
3. 开发一些必要的技巧和工具以能够有效地像团队一样来定义需求。
由于这些主题或多或少有些被有关系统开发的著作所忽略,《探索需求》一书可以用作对你当前的任何需求过程的一个参考,而不管其是否正式,本书的很多章节都设计成独立的模块,每一个都介绍了一到几种用于提高需求过程的工具或方法。读者可以逐页阅读本书,也可以在任何时间只读那些你最需要的章节。无论你采用哪一种阅读法,它都将帮助你更加清楚地了解“自己在讨论什么”。
.