在启动任何项目之前,需要了解项目是干什么的。是构建一个什么系统?是库存系统、供应链模型还是股票价格跟踪和预测系统(也称做随机数生成程序)?
了解需要设计和构建的系统的最佳途径是质问客户。了解客户的需求可能是一个沒长和费力的过程。这一过程可能包括数天乃至数周的交互询问、学习现行惯例、认真翻阅落满灰尘的卷宗和其他企业资料,并在客户履行日常工作时进行暗中监察。
在此过程结束时,客户应该不会公开表示对您的憎恨,但他们可能希望您离幵并暂时不要打扰他们。良好的提问和回答过程应该会使每个人感到疲惫,但是却由于从客户那里离了解到很多信息而使自己内心充满自豪感,真心为公司奉献的客户通常愿意回答最愚蠢的问题,只要您愿意提这些问题。BenjaminDisraeli曾说过一句名言:“跟任何人谈论有关他自己的事情,他都会愿意长时间倾听。”只要您能忍受,大多数客户都非常乐意向您详细谈论他们业务领域的细枝末节。
我们的目的不是拷问客户(尽管有时客户感觉好像如此)。而是对试图解决的问题有一个确切和完整的了解。在完成问题调研之后,我们都希望碰到的意外情况越少越好。没有预料到的困难和特性要求是造成软件项目推迟完成、超出预算或完全失败的最大原因。
越早识别潜在的问题并且尽量充分地了解系统的特性,越容易做出合理安排,并且它们破坏您精心制定的计划的可能性越小。因此当开始一个项目时,必须会见客户,有步骤地了解他们并知道他们在做什么。即使正在设法解决的问题仅是其业务的很小一部分,也需要尽量了解其整体状况。
当首次与客户会面时,提醒客户您准备暂时打扰他们一段时间通常不会造成不良影响,这样做有助于弄清楚哪些人是关键人物,负责实施此项目和渴望成功的那些人会善待您的提醒。而那些缺乏凤险精祌的人此时可能会公开自己的真正意图。这种想法很自然地会引出下一节涉及的内容。