3.1 在初始阶段我们并不真正地知道目标是什么
理性模型最严重的缺陷在于,设计师们往往只有一个模糊不清的、不完整的既定目标,或者说是主要目的。在此情形之下: 设计中最困难的部分在于决定要设计什么。 在我还是学生的时候,有一个暑假里去替一家很大的军火商打工,在那里我被指定去做设计和构建一个小型数据库系统的工作,用以跟踪某个雷达子系统的上万张图纸以及其中每一张图纸的更新状态。 过了几个星期,我做出了一个能运行的版本。我自豪地向我的客户演示了一个输出报告的样例。 “做得不错,这的确是我想要的,不过你可否把这里改一下?那样我们就可以……” 在接下来的数个星期,每天早上我都给客户演示输出报告,每次都是顺应了前一天提出的要求之后的修订结果。每天早上,他都会对产品报告研习一番,然后使用一成不变的、彬彬有礼的口头禅提出另一项系统修订的要求。 系统本身很简单(是在打孔卡片机上实现的),而且那些修订在概念上看起来也是平淡无奇的。就算是最影响全局的变化也只是将图纸列表按照内部等级排序或缩进显示,而等级是用卡片上单独一个0~9的数字来表示的。其他的改进包括多级局部汇总(当然有例外情况要处理)以及自动地为需要注意的值标注上星号。 有那么一阵子,我很是愤愤不平:“为什么他不可以就想要的内容下定决心?为什么他不能把想要的对我一口气说完,而偏偏要每天挤一点出来呢?” 然后,我一点点地认识到,我为客户提供的最有用的服务是帮助他决定什么是他真正想要的。 那么,如今的软件工程原则要复杂得多了。我们认识到,快速原型是一种进行精准需求配置的必要工具。不仅整个设计过程是迭代的,就连设计目标的设定过程本身也是迭代的。 软件工程领域的复杂化不仅没有停止的势头,甚至连明显的放缓也看不到,在汗牛充栋的文献资料中,“产品需求”仿佛是给定设计过程的常规假设前提。不过,我要提出一点异议,那就是,在初期就能了解整个产品需求是相当罕见的,而远非常态: 设计师的主要任务乃是帮助客户发现他们想要的设计。 至少在软件工程领域,快速原型的概念有其地位及其公认的价值,但在计算机(体系结构)设计或建筑架构设计中,它的地位与在软件工程中并不总是相当。但无论如何,在目标迭代方面,我在这些设计领域都看到了相同的现象。越来越多的设计师们为计算机构建模拟器,为建筑构建虚拟环境演练,以此作为快速原型,从而促成目标的收敛。目标的迭代必须作为设计过程的固有组成部分加以考虑。