另外,你还可以采用一些专业的方法论来解决这种讨论问题,比如的六顶思考帽。你可以按照不同的帽子颜色来组织大家思考,如在白色帽子里讨论客观的事实;在黄色帽子里讨论做这个事情的好处;在绿色帽子里发挥创新,看看这个事情能做成什么样子,发挥想象力;在蓝色帽子里讨论做事情的逻辑、步骤;在黑色帽子里讨论未来的风险和预防措施;在红色的帽子里谈谈大家对这个事情的主观感受。这样会议才不会失控,观点也被罗列得很清楚。
在开发过程中,内部管理还要注意的一点是时刻强调以验收为目的的思想,每个任务的终可交付成果一定要是可以被检查的,比如,【界面要求:美观大方、简洁明快】,这个要求我不知道如何检查。所以,给开发小组布置任务的时候要考虑如何检查结果,比如我见过一个计划,里面有一个任务【开发人员熟悉EJB编程】,这个任务,除了让这些人去参加一些专业认证考试,否则,结果很难被检查。所以,时刻考虑如何检查结果、如何向客户交付是项目经理一直要注意的事情,我听说有些老项目经理拿到项目是倒排计划的,即首先看如何验收和验收标准,然后决定工作计划。很多项目开始了很久,还不知道如何验收,那么这个项目出问题的可能性很大了。做项目是为了验收,拿到钱,我们的角色不是研究机构,我们的目的是在付出那么多劳动后得到结果。另外我插一句:我是极其不主张到客户现场开发的。尤其是一大群技术人员直接和客户交流,很容易引起冲突和矛盾(技术人员的本性决定的)。我的做法是项目经理和项目实施人员到现场,软件开发人员还是在公司做项目。项目实施人员是初级项目经理,他们了解自己的产品,懂得一些客户的业务,关键是在于他们具有良好的沟通能力,俗称“皮厚”。他们是客户和研发人员的桥梁,其职业方向也是很机动灵活,以后可以有很多方向可以转,比如销售、行业顾问等,其出路反而比开发人员的路要宽得多。接着,我们再谈谈让人头痛的需求变更问题。变更通常分为两种:一种是部分更改了原先的目标,即需求变更;另一种是没改变目标,但是客户不满意目前的实现方式,大到流程的实现,小到界面的布局,都是属于这类。碰到这种情况是难以避免的,主要是事先沟通的不够充分和客户随着项目的进展,慢慢想清楚了问题,改变了以前的思路。这时候,如果需要改并且你的战略是容许这种情况的,那么注意下面几点:
1. 确保以前的文档,是记载着以前的结论的东西,客户是否签过字,如果没有,赶紧把你的工作停下来,赶快再和客户自己确认一下你的方案,然后让他签字,避免以后说话没有凭据;
2. 和客户坐下来,自己探讨他修改的根本目的是什么,是不是有同样能达到相同目的,但是对你来说有代价更小的选择?
3. (项目初期的工作)明确更改流程,一般是客户指定一人签字(否则客户每个领导都有权力来插一杠子,你废了),以正式项目文件的方式提交给你,然后,你做评估分析,分析对成本、进度的影响,在你的领导同意后,出相应意见书,主要是要说明更改设计的原因和指出由此带来的不确定后果(这个东西先写出来,后面如果真的发生了,至少不是你的错)。然后再让客户在上面签字。见过医院给病人做手术以前让家人签的免责条款吗?对,学习那个,让大家都意识到任何的更改都有成本和代价。
所以,对于这种需求天天变的客户,你一定要事先做好规矩:一、统一联系人,客户指定一个人和项目组进行沟通,不能张领导、王领导都来说几句,如果他们意见不一致,那你只有得罪领导的选择了,所以,项目的初要定好规矩,我项目组只认一个的意见,有什么要求你们内部先统一再和我谈,我不想卷入你们内部业务部门之间的矛盾之中;
一、所有需求变更全部要有书面文字,这点切记!这样做好处多多:
*有书面证据,以后他还想改,你有了他以前要求的证据,告诉他:你以前可是这么说的;
*便于需求变更管理,需求如何慢慢演变的历史可以看清楚,从而更深切地体会客户的目的;
*对于客户来说,嘴巴一动方便,反正是你们做,不花他的资源,所以要求是否合理,是否和项目的目的一致,他是不负责任的。但是如果要他写书面要求,还要签字盖章,他要谨慎多了,而且一写东西,思想会更加深入,很多无理要求也这样胎死腹中了;
系统开发告一段落后,进入客户培训、系统验收阶段,这个阶段,我一般会注意以下几个问题:
给客户做培训前,多注意一些表面功夫。很多程序员认为,既然很多系统采用原型法,有一个由粗到精的过程,那么系统的逻辑核心是否正确才是关键,至于界面如何,界面上的用词是否准确,那是无关紧要的问题;而且培训的时候也是空手上台、信手拈来,想到哪里说到哪里,下面听讲的人不知所云,云山雾罩,培训效果自然可以想象。我的体会是,给客户做培训的版本,如果你在做多次测试以后仍然不能确定逻辑是否合乎要求,那么,你至少要在界面上多花一点功夫。注意每个界面的布局、用词、链接的正确性等等,总之不要让客户看到一些他不该看到的东西,否则,仅仅因为一些无关紧要的报错让客户第一印象觉得系统不稳定,那你真的比窦娥还冤了。如果工作再做得详细一点,可以做一些类似Flash的东西,把一些你要强调的重点用通俗易懂、轻松愉快的方式表达出来。文档方面,准备至少两个文档:用户手册和培训手册。这两个文档的内容很多都是一致的,但是角度完全不同。用户手册往往是站在系统设计者的角度,按照自己的思路,分模块讲解系统的操作和功能;而培训手册,一定要站在客户业务人员的角度,根据每个角色面对不同业务的办理,如何通过使用本系统的一系列功能来实现目标。所以,第一次培训以前,系统界面是否完整正确、培训文档是否完备、培训时所举的例子是否有代表性都是很关键的因素,第一炮打不响,以后麻烦很多。
上面讲的是培训的时候,丑媳妇要化妆好再去见公婆的问题。其实,项目实施中还有一个考验项目经理功力的是如何调动客户积极性的问题。一般来说,客户是懒的,这是他花钱找你做事情的原因。一个项目的成败,和客户的配合程度很有关系。根据我的分析,一般项目中的客户都可以分为三类:支持的、消极观望的、抵触的。他们人数的分布一般是一个纺锤形:支持的和抵触的人少,观望的人多(如果你接了一个人人都抵触你的项目,那你还是不要做了)。首先,分析一下那些人为什么支持你和抵触你。很简单,于公于私两个方面分析,上了新系统,谁的工作量有所变化?谁的潜在利益是否受到威胁?谁的岗位是不是因为新系统而消失?传统的利益格局因为新系统的使用而发生怎么样的变化,这些东西,都是项目经理必须去了解的,这样,你才能团结那些支持你的人,消减那些抵触你的人。项目经理是一个很奇怪的角色,属于典型的责任大、权力小的角色,他能做的只有借力打力,不管在自己公司还是在客户那里,一定要依靠别人才能完成自己的目的。只有了解哪些人会因为什么而帮助你,哪些人会因为什么而抵触你,你才能让客户配合你做工作。比如上一些内部计算机辅助管理系统,其必然后果是让本来管理混乱时有人可以浑水摸鱼的一些利益消失掉了,这样,有些人肯定要捣乱,到处诋毁这个系统。这时候,你可以散布一些"谁抵制新系统说明自己屁股上有屎"这类的论调去压制他们,减弱他们的影响。总之,团结积极分子,打压敌对分子,带动大多数是你的基本策略。还有一个体会和大家分享:千万不要觉得对方的领导(中层干部)是应该配合你工作的,特别是一些国营单位,多一事不如少一事,他干吗要帮你?我的经验是:对方领导如果没有拿你的事情作为内部斗争的武器而从中作梗(当然,他针对的不一定是你),那已经是算合作的了,记住,他不捣乱是帮你忙了。作为项目经理,其实脑子里是几样东西:做哪些事情、做到什么程度、怎么交货、手上的资源以及各个事情的优先级。所谓多快好省那是人类的梦想,这四个方面都是相互矛盾的,属于典型的又要马儿跑,又要马儿不吃草的类型。一般说来,项目经理在考虑问题的轻重缓急方面,往往是把快放在第一位,各方领导都会给你后期限,所以保进度是第一位的;省是第二位的,企业的根本目的是盈利,如果收入不能增加的话,至少费用要控制住;好是第三位的,没办法,谁都想精益求精,但是,没有强大的资源保障,质量只好先牺牲了;后是多,客户的要求源源不断,如何降低客户的期望值,把项目控制在一个合适的范围内,让客户从理想回到现实也是项目经理的分内工作。