在做软件项目测试服务的过程中经常听到如下抱怨:开发出来的东西根本不是我们想要的;我们要求的某某功能没有实现;令甲方难平心中之愤的是之前这些问题都已经口头告知了乙方项目组成员,而乙方在项目实施过程中却竟然无视如此重要的需求与反馈。也会听到有的乙方项目经理的苦诉:我手下的程序员在设计评审时描述了他所负责的模块架构,然而软件开发出来后,我发现和我所理解的结构大相径庭……

也许有些情况比上述问题还要复杂,那么,问题何在?其实以上诸多问题都是有沟通引起的,沟通无效导致软件项目的终失败。在软件行业,沟通的成败决定整个项目的成败,沟通的效率影响整个项目的成本、进度,沟通不畅的风险是软件项目的大风险之一。在需求多变、逻辑性强、复杂程度高的软件项目建设过程中需要建立起良好的沟通计划与秩序,以严谨的沟通态度与科学的沟通方法保障软件项目的顺利实施。

一、软件项目本身决定软件项目管理需要有效沟通

软件项目本身是沟通的产物。从客户需求的前期调研到需求分析到架构设计再到编码设计实现到贯穿项目过程中的测试修改再到上线发布等等这一系列工作都是以沟通为基础的。沟通不仅仅是软件项目管理的必要手段,沟通更是软件项目建设过程中的必需工具和必不可少的重要工序。

1、软件项目需求的确定是甲乙双方不断沟通的产物

明确的顾客需求诞生于和甲方的互动沟通之中,软件项目建设之初客户需求的确定依靠甲乙双方的不断沟通来完成。软件项目建设的软肋在于客户需求的把握。项目规划之初需要乙方派出专业的项目经理和研发骨干与乙方进行深入沟通,充分把握客户的实际需求,有时候鉴于项目之初客户需求的模糊性或者甲方项目经理的项目经验与业务范围所限,在一开始甲方的需求表达的还是不够深入、全面。这需要乙方凭借自己的项目经验或者行业经验未雨绸缪给出规划建议或细节的充分考虑,为项目需求做出充分准确的余量规划。而这些都是建立在不断地反复沟通与对终用户的深入调研的基础之上的。在这里对于沟通与调研的方法不做赘述。

2、软件项目实施过程中项目组内部需要建立良好的沟通秩序(沟通计划)并保证沟通的有效性

我们曾遇到过这样一个案例,某软件企业在开发某业务管理软件,客户需求做得非常完善,系统分析也十分明确、清晰,但在开发阶段,项目经理发现系统分析其中一个中间层的函数出错,由于该功能模块由他一个人负责开发,当时他直接对其参数进行了修改,也并未及时和其它编程人员进行沟通说明,过后很快忘了这件事,当项目接近尾声时,系统突然出现一个大的Bug,影响到整个系统的运行,后在花费了大量的精力进行查询测试后,才发现是这名项目经理更改的参数出了错。如果初该项目经理能及时和项目组成员进行沟通,这种错误完全可以避免。一个建立起良好的沟通秩序的项目团队可以有效防范项目失败的风险并能达到事半功倍的效果。

项目沟通计划是项目整体计划中的一部分,其作用非常重要,却常容易被忽视。很多项目中不做完整的沟通计划,导致沟通混乱,轻则导致项目组工作效率低下,重则直接导致项目以失败告终。项目经理确定之初要做的第一件事是确定整个项目的沟通计划,因为在沟通计划中描述了项目信息的收集和归档结构、信息的发布方式、信息的内容、每类沟通产生的进度计划、约定的沟通方式等等。只有建立起良好的沟通规则,才能把握好沟通,从而全面了解项目的各方面信息,不断推动项目的顺利进展。项目的沟通形式是多种多样的,大致分书面和口头两种形式。书面沟通大多用来进行通知、确认和需求等活动,适合于项目团队中使用的内部备忘录,或者对客户和非公司成员使用报告的方式。口头沟通包括会议、评审、自由讨论等。这一方式简单有效,但不象书面形式那样“白纸黑字”留下记录,因此不适用于类似确认这样的沟通。沟通时项目组成员有不理解的内容一定要表示出来,以求表达方的进一步解释,直到达成共识。另外像手势、图形演示、视频会议都可以用来作为沟通的补充方式。可以在视觉上把要表达的内容更直观、更迅速的传递给项目组成员。

其实要达到有效的沟通有很多要点和原则需要掌握,其中重要的是要把握尽早沟通、主动沟通这两项基本原则。曾有一项目经理,检查团队成员的工作时松时紧,工期快到了和大家一沟通才发现进度比想象慢得多,以后的工作自然很被动。尽早沟通要求项目经理要有前瞻性,定期和项目成员建立沟通,不仅容易发现当前存在的问题,很多潜在问题也能暴露出来。在项目中出现问题并不可怕,可怕的是有问题而没被发现。沟通得越晚,暴露得越迟,带来的损失越大。沟通是人与人之间交流的方式。主动沟通说到底是对沟通的一种态度。特别是项目经理在通面对用户或上级、团队成员面对项目经理时,主动沟通不仅能建立紧密的联系,更能表明你对项目的重视和参与,会使被沟通方的满意度大大提高,对整个项目非常有利。在软件项目建设过程中,我们极力提倡主动沟通。

在沟通管理计划中应该根据项目明确的双方认可的沟通渠道,比如与用户之间通过正式的报告沟通,与项目成员之间通过电子邮件沟通;建立沟通反馈机制,任何沟通都要保证到位,没有偏差,并且定期检查项目沟通情况,不断加以调整。这样顺畅、有效的沟通逐渐建立起来。

3、软件项目的(阶段性)成果确认也离不开各方(甲方、乙方、项目验收方)之间的沟通

软件项目成果的确认是循序渐进的过程,而软件项目建设的柔性标准需要沟通来弥补。软件开发不像加工螺钉、螺母,有很具体的标准和检验方法。软件项目的标准柔性很大,往往在用户的心里,用户好用是软件项目成功的标准,而这个标准在软件项目建设之初很难确切地、完整地表达出来。因此,项目建设过程中甲方和乙方的互动沟通是实现这一共同目标的方式和有效途径。

软件项目建设方只有通过与终用户的不断沟通才能找到完善程序设计与实现的方法和途径,使软件更加符合用户的业务需求与使用习惯。从而逐步完成甲方对项目的渐进确认与乙方对软件系统的逐步完善。

二、从项目团队本身的建设来讲,有效的沟通有助于项目团队集体智慧的充分发掘与展现

软件项目建设过程中,项目组成员相互认同与默契是激发项目团队创造力的源泉,是确保项目成功的必要条件。而互信的合作氛围源自项目团队成员之间的坦率沟通。相互沟通是人的一种重要的心理需要,是人们用以表达思想、情感与态度,寻求认同与友谊的重要手段。

为项目团队打造一种坦率沟通的工作氛围是项目经理不可推卸的责任。项目经理重要的工作之一是沟通,通常花在这方面的时间应该占到全部工作的75%~90%.良好的沟通才能获取足够的信息、发现潜在的问题、控制好项目的各个方面。

软件项目建设过程中项目经理的沟通能力显得尤为重要,首先,项目经理需要通过各种约定的沟通方式将意图传递给项目组成员使各成员理解并遵照执行。如果沟通不畅,项目组成员不能正确理解和执行项目经理的意图或规划,会导致项目进展偏颇或陷入泥潭,终导致项目混乱甚至项目失败。其次,项目经理的沟通能力直接关系到对整个项目团队的建设与领导。良好的沟通需要注意:⑴沟通始于聆听,倾听比谈话更难,理解别人之后才会被别人理解,有效沟通的秘诀在于充分关注谈话者。仔细聆听项目团队成员的声音,懂得用心去倾听团队成员的“意见”或“异见”。⑵根据沟通场景,引导对方去思考,根据对方的反应调整沟通方式。⑶在表达观点时准确阐述自己的意见、观点、思想、方法和方案,以易于理解的方式加以阐述,提高沟通效果。同时需要把握阐述的要点,并注重阐述内容的系统性和连续性。如此,在项目经理的带动下,项目团队会很快建立起坦率沟通的合作氛围。

三、从甲乙双方的相互促进来看,有效沟通是双方共同推动项目前进的润滑剂

在软件项目建设过程中,甲乙双方自始至终都离不开双向的交流与沟通,而双方建立起良好有效的沟通计划有利于项目朝着双方共同确定的项目目标前进。项目目标的实现直接影响到甲乙双方的共同利益,乙方项目经理要做好项目必须重视与甲方(信息化部门和业务部门)的充分沟通,他们的各类需求都必须予以考虑。如甲方项目组成员、项目经理以及他的上司各自需要什么信息、在每个阶段要求的信息是否不同、信息传递的方式上有什么偏好,都是需要细致分析的。比如有的客户希望每周提交进度报告,有的客户除周报外还希望有电话交流,也有的客户希望定期检查项目成果,种种情形都要考虑到,分析后的结果要在沟通中体现并能满足不同人员的信息需求。与之对应是的项目建设过程中乙方项目经理也要对甲方提出需要给予的支持或要求,充分调动甲方参与项目的热情。比如在项目的不同阶段邀请甲方参与项目成果的阶段性验收与确认,一方面为项目的终验收确认铺平道路,一方面让甲方充分了解项目的进展并提出日臻完善的建议,在这过程中,使软件项目阶段性成果得到甲方业务部门(终用户)的认可也是沟通的重要环节。如此,方可调动一切可以利用的资源为软件项目建设服务,如此建立起来的沟通也才能保证全面、有效。

四、项目经理需要做好所在组织内部(领导层和其他与项目发生横向联系的部门)的沟通,让领导层随时了解项目的进展与遇到的困难,有助于为项目进展搭建良好的环境

乙方项目经理为保障项目的顺利进展还需要做好自己所在组织内部的沟通。组织内部的沟通又包括领导层和其他横向协作部门。乙方项目经理所在的组织结构通常对沟通需求有较大影响,比如组织要求项目经理定期向项目管理部门做进展分析报告,因此项目经理需要做到与领导层的主动沟通,让领导层随时掌握项目动向并能预测到项目风险,从而有效地进行风险防范。从而也让领导层了解到项目的瓶颈与困难,便于项目经理申请各项支持。从而为保障项目进展搭建良好的内外部环境。另外项目经理做好与所在组织内部其他横向协作部门的沟通对保障软件项目能及时得到其他部门的协作与支持也非常重要。