请你先思考这些问题:

1)领导这个要求的需要是什么?

2)如果要做这个功能,人机是应该如何交互?

3)要实现这个功能,要增加什么设备?软件要怎样修改?

你开始挥汗如雨地干起来了,这个要求可不简单啊!

1)要购买发短信的设备,要研究这些设备的开发接口。

2)手机屏幕这么小,而且只能通过短信来交互,如何选菜单、定餐、取消订餐等细节都需要想清楚。

手机订餐功能终于做出来了,但这个系统还时灵时不灵,问题是出在软件、硬件,还是中国移动都搞不清楚,领导大发雷霆,这样的小事情,怎么搞成这样?!

后来有人提出来,不在公司的员工,打电话回公司告诉前台吃什么,不久搞定了?

顿时全世界一片哇然,你一屁股栽倒到地上!

领导要解决的问题其实只是要方便不在公司的员工能及时订餐,而领导提出来的通过手机来订餐是领导自己提出来的一个解决方案而已。我们的客户往往会直接将他们想像中的解决方案提出来,从而让你忽略掉他的真正意图,当按照客户的解决方案去做的时候,往往不能命中真正的需要,费时费力又不讨好。当提出具体修改要求的人是领导级人物时,项目组更加是手足无措,唯领导命令是从。

作为项目组,任务时候都必须比客户更加清醒,不要埋怨客户的变来变去,绝大部分客户是理性和聪明的,只是我们不够厉害,不能分析出客户真正之需要。客户其实不是出钱让你按照他的要求去做,而是让你处于他的角度,提出高性价比的解决方案,满足他的真正需要。

6. 榨干人脑汁的需求分析

需求分析核心的问题是搞清楚客户到底想要什么!客户通常只会有朦胧的大概的想法,他们提出来的需求,往往只是表面的、不全面的,甚至是匪夷所思、互相矛盾的,我们需要透视它的本质。如果我们能说出客户内心深处真正想要的,而客户又不能直接表达出来的东西,我们才能真正做到“为客户带来价值”!

有很多方法能帮助我们搞清楚客户真正之需要,如问卷调查、访谈、用例图、用户故事等,还有前文介绍的“需求分析大道理”,事实上这些都不是提高需求分析能力的根本方法。需求分析的大道理、方法论这些多让你开阔了研究,但基本上难以帮助你解决项目中需求分析的实际问题。上文的订餐系统,看上去简单,但也足够让你抓狂!没有深厚的功底,是难以做好需求分析工作的。

要具备怎样的技能才能成为需求分析高手呢?

图5 需求分析高手

需求分析能力的提高,依靠长期的积累,长期的实践!以下是一些建议:

1)不要以为学过了一些需求分析知识,以为自己很厉害,也不要用这些大道理来指导项目组工作,不仅对项目组毫无实际帮助,还会帮倒忙。

2)不要一毕业直接投身需求分析的工作,好还是从编码开始,另外也可以考虑做测试、实施。

3)要不断地积累业务知识、技术知识。

4)学习面向对象分析、面向对象设计,并在实际工作中运用,面向对象分析与设计的方法,会从本质上提高你发现问题、分析问题、提炼问题、解决问题的能力。从这点上说,从开发开始是好的选择。

5)把握一切能提高你表达能力与理解能力的机会,和别人沟通要及时表达出你对别人说话的理解,平时多写文章、博客之类的,提高你的书面表达能力。

6)为什么强调要有丰富的管理和被管理的经验呢?订餐系统中其实我们看到很多跟管理相关的问题,很多问题是需要管理办法去解决的,缺乏管理和被管理的经验,会难以理解客户的问题,更加是无从从管理上提出具体的解决办法。

需求分析是榨干人脑汁的活,超具挑战性的工作!要站在比客户更高的角度把握住客户的需要,然后将客户的这些需求转化为软件可实现的需求规格,与此同时还需要为客户提供与软件相匹配的管理意见。你做好准备迎接这样的挑战了吗?

7. 变被动为主动

大部分情况下,需求分析的工作总是比较被动的,总会有点被客户牵着鼻子走的感觉,为什么会这样呢?看看下图:

这个图表示了随着项目的开展,客户与项目组对本项目的需要的认知程度是怎样变化的,横轴是时间,竖轴是对需要的认知程度。这个图说明了这些问题:

1)项目开始时,客户对需要认知程度比较高,而项目组只是有朦胧的认识。

2)随项目的开展,客户和项目组都逐步提高了认识。

3)整个项目开展过程中,客户对需要的理解程度总是比项目组要高。

以上该图反应了绝大部分项目的情况,这样的项目客户对需要的理解永远于项目组,这样项目不可避免地会陷入被动的境地。项目组做出来的东西往往不是客户真正想要的,要反复多次,但做出来后,客户又会继续有新的要求,周而复始,没完没了,客户和项目组都相互不满对方的表现,终项目很可能是“双输”。

如果是下面这个图呢?

在项目初期,客户对需要的理解程度是比项目组要高的,但项目组的学习能力比较强,对需要的理解很快超越了客户,并且在后面持续于客户。