因为客户的重要性,客户占有决定性的地位。对于广大不能清楚描述需求的客户,项目开发人员负有教育客户的义务,需要引导客户,让他们说出自己的心声。客户往往都是领域专家,对自己的工作有很深的认识,可是由于对软硬件开发的不了解,往往表达不清,甚至表达不出自己的需求。这时候,就是体现你的功力的时候了,象对待上帝一样对待你的客户。
3.2 耐心是首要的学理工科的人,一般在逻辑思维上会比较好,可是对于客户来说,可不一定是这样。一些客户在了解需求的时候,扯东扯西,含糊不清,只有耐心才能获得真正的需求。耐心最后会仍会体现为沟通,只有耐心的沟通,你才能揭开需求的重重面纱。人的行为总是会受到思想的指导,如果你解不开客户的心结,你就不可能了解他真正需要的。
3.3 参与是重要的
方法的一个重要实践,就是提倡"现场客户"(on-site customer)。也就是说,客户应该随时和开发人员在一起,随时提供资料和做出决策。而这个客户,也必须领域专家,而且能够有权做出决策。非常的贴近客户,甚至可以在做游戏的过程中完成卡片的填写,能带来很强的客户参与度。
4测试
这里的测试指的是考核软件项目是否成功的一个"执行性目标"。例如,开发物流系统的目的是为了缩短产品周转周期,降低库存;开发供应链系统是为了加强和供应商的联系,降低库存。这些和具体业务有关的指标都是可以通过细化,用多种分指标来度量的,所以是可以做到的。
我们把这种目标称为测试就是要提醒开发人员,要把满足这种目标当作最终的测试。
有了明确的需求,我们一定竭力做如下几件事情:
什么(WHAT):按顺序列出达到目标所需完成的工作;
何时(WHEN):完成工作所需要的时间;
做到的程度(HOW-WELL):要完成的工作以何标准来度量;
资源(RESOURCES):完成工作需要的人员/资金等;
谁(WHO):由谁负责完成任务。
5拥抱变化
需求变化是开发人员最讨厌的一件事了。可是,就像我们常说"哭不能解决问题"一样,讨厌能解决问题吗?拒绝客户的变更要求,要求客户在需求规格说明书上签字。这些做法只能是适得其反。没有任何正面的、积极的意义。需求变更要求我们的开发工作要迭代式进行,包括需求、设计、实现等阶段。这样才能将变更风险减到最小。