有效的需求分析员为什么难以产生
不容置疑,需求分析的正确、完整直接影响着项目的成败,而需求分析员是需求分析正确与否的直接责任人。可是我们所受的教育,所处的工作环境制约了我们,让我们很难成为一个有效的需求分析员。
大学里,老师们讲课完毕后,就会留给学生几道习题,而这些习题几乎是不用经过思考就可以知道它的要求是什么,根本谈不上需求分析,更加不需要考虑如何去进行有效的需求分析。然而,同样是这些学生,毕业后却要面对错综复杂、频繁变化的需求,需要像专家一样发现需求、挖掘需求,但是这些没有经过良好训练的“士兵”仅仅靠天赋和勤奋就能打赢这场艰苦卓绝的“战役”吗?
大多数的需求分析人员都是从开发人员成长起来的。工作中,我们长时间一言不发,面对着冰冷的显示器,手指在键盘上翻飞,嘴角带着神秘的微笑,用一种奇怪的符号在写着什么。我们生活在一个数字的世界中,我们当中可能很多人从来没有和任何一个客户接触过。可是突然有一天,我们发现自己不得不面对一大群用户,更加糟糕的是这些人竟然不懂什么是C++,也没有听说过互联网。“天啦,我能和他们说什么啊?”
现在存在着这样一种谬论,认为优秀的程序员也会是有效的需求分析员,但是我们所接受的教育,我们的工作并不能教会我们如何成为一个有效的需求分析员。就像编码,测试,项目管理一样,需求分析也存在着大量的技巧。很难想象不经过艰苦的训练就能够很好的掌握一种编程语言,需求分析也是一样。但是现实中,很多的程序员没有经过任何的训练就变成了一个需求分析员,变成了一个缺乏足够技巧的需求分析员。
什么是有效的需求分析员?一个有效的需求分析员需要在需求分析过程中在工作中和用户建立真正的伙伴关系,能够在错综复杂的现象中发现问题背后的问题(the problem behind the problem),在陌生的领域内能学得更快,而且还要用共同的语言和用户进行交流在工作中和用户建立真正的伙伴关系。
和用户建立真正的伙伴关系
我们知道用户的业务目标是什么吗?我们知道用户三年甚至更久的发展方针是什么吗?我们知道我们的软件能够给用户带来哪些利益吗?用户把我们当作朋友吗?
和用户建立伙伴关系往往是写在纸上,而不是放在心里,更难落实在实际行动中。和用户建立伙伴关系不是空泛的口号,而是要为用户的经营结果负责。它不是隔靴搔痒式的善愿,而是要求苦乐与共的团结、有用信息的交流和协力谋求成果。我们作为一个需求分析员,扪心自问,在需求分析中真的把用户的商业目标放在第一位了吗?真的把用户看成我们伙伴了吗?不了解用户的目标,不尊重用户的利益,我们能够分析出让用户惊喜的需求吗?能够开发出为用户创造大量价值的软件吗?
怎么才能和用户建立真正的伙伴关系呢?首先,要转变我们的态度。很多IT人都是自诩为“社会精英”、“高科技人才”,在和用户,尤其是传统行业的用户交流的过程中,几乎是习惯性的傲慢。如果需求分析员带着这样的态度去工作,用户会是什么感受?是我们给用户服务,还是来教训用户?带着居高临下的态度,我们又怎么能够做到“像用户一样思考”?所以,我们必须要改变自己的态度,真心实意的把用户当作上帝看待。要明白,是用户的钱养活了我们。第二,培养人际关系。需求分析不是做交易,不是把收了钱就可以置诸脑后的一锤子买卖。我们要真诚的面对客户,用真心换取真心,尽力和用户成为朋友。第三,我们要展开我们的商业想象力。大胆寻求满足用户需求的更佳途径。象用户一样看待事物远远不够,我们要争取看得更清晰,也就是常说的“超越用户”。 发现问题背后的问题
当一个软件项目开始后,用户的要求往往是开发完成某个功能(如人事管理,财务等)的软件,用来解决目前存在的问题。但是软件真正能够给用户创造的价值是什么,这是每一个需求分析员必需思考的问题。
需求分析应该是一种系统思考,是一种需要“见树又见林”工作。有效的需求分析员要把企业看成一个系统,并且把它融入大社会这个大系统中,全面的观察用户的工作,而不是片段的、一幕一幕的个别事件。比如用户需要开发一个人事管理软件,表面上的需求可能是更方便的对员工进行管理,但是实质上的需求可能是通过人事管理软件来解决工作纪律松散、考勤不严格、人员流动随意等问题。同样的,用户需要开发一个财务软件,除了更好的管理资金,其真正的目的可能是为了解决内部财务制度混乱的问题。如果需求分析只是停留在表面的问题,而不能够发现用户真正关心的问题,很难相信开发出来的软件能够让用户发自内心的满意。
如果发现问题背后的问题呢?在大多数公司,除了存在一些正式的组织之外,还存在着各种非正式的组织,这就需要需求分析员在需求分析的过程中,除了要利用正式的渠道(会议、访谈等)外,还要善于利用非正式的渠道(午餐中的交谈、私人会谈等)来了解用户的需求。我们会发现非正式的渠道往往是发现问题背后的问题的关键。