引自需求的潜在性
用户说不清楚需求,往往是一种常态。问年轻人:你对女朋友的要求是什么?他可能会说:没啥要求,处得来就行!现实中,“没啥要求”往往意味着要求很高,只是说不清楚罢了。
说不清楚的时候,一般要见面谈。有家公司打算建立一个信息系统,但一直说不清楚需求。后来,公司领导到同行企业参观,眼睛突然一亮:我要的就是这个东西!
“见面谈”的好处,是把写“说明文”的题目变成了“选择题”。技术创新中有一种常见的做法叫做“原型方法”。其实就是先做出个样子,让用户选择。如果需求能说得清楚,就不必这么麻烦了。
说不清楚需求的原因有以下几种:
知识性原因。外行经常会提出难以实现的需求。外行容易被夸张的宣传蛊惑,以为专家学者在论文、报纸上宣传的东西都是对的;会把小概率事件当成确定性成立;会把特殊条件下才能成功事情当成普遍成立。比如,外行认为只要有了数据,就可以建立很好的模型;认为只要找到名医,就可以把自己的病治好;只要比尔盖茨能做的,你也应该能做。
利益性原因。有很多与管理相关的需求,都不容易发现。常见的原因是:管理问题往往与人的个人利益、能力不足相关。人们会自觉不自觉地逃避责任、掩盖问题的真相。这样,需求也就不容易看清楚了。过去有种说法,当君主“兼听则明、偏信则暗”。就是因为君主容易被谎言和假象欺骗。
表达性原因。古人说“知人者智,自知者明”。对普通人来说,了解自己、有自知之明并不那么容易,表达出来就更不容易了。遇到“找朋友”、“开发管理”系统这种个性化需求强烈的问题时,需求表达不清就是一种常态。
智慧性原因。一般人提出的问题,只是头疼医头脚疼医脚。他们只是发现了浅层的原因,要求解决表面的问题。而真正的原因往往隐藏在现象的背后,需要找到根本原因才能发现真正的问题。
我强调“需求隐藏”是有原因的。很多研发人员以为:调查的人多了,就能把需求搞清楚;多数用户怎么说,就怎么做。这样做的结果很可能是失败的。创新是需求驱动的、需求调研很重要,但也是最容易犯错、最需要讲究方法的。原始的调研需要提炼,才能得到真实的需求。对创新者来说,需求分析可能是最有技术含量的工作。
需求说不清楚的,讲不明,是常态。程序员的期望“把需求说清楚”,这是一个非常态的溯求。因而,软件开发思想从最初的瀑布式演化成当的敏捷式。当然,两者并非是对立面,而是有机的结合体,将长期目标与短期目标有机结合体。
以快的速度拿一个初稿出来,以供批判,从挖掘出用户的真实需求,这是数据专家的在软件研发中意义所在。
网友评论