“我们决定下个月28号进行验收”,客户很轻松地在不经意之间和我说了这句让我朝思暮想的话,这句话使历时三个月的验收日期终于定下来了。回顾这三个月,我可是费了不少心力。日期虽然定了,但是和合同规定的日期足足晚了三个月。
我所负责的这个软件开发项目开始做得还算比较顺利,测试工作也早早已经完成。但客户迟迟不肯验收,原因是客户卡在一个小问题上,说此问题查清后再验收。这个小问题在大多数情况下是不会出现的,只有在特殊的操作下才会出现。由于一直无法找到重现此Bug的规律,故这个小问题一直没有很好的解决彻底,结果使到项目验收一次又一次被搁置。再这么拖下去,我真不知如何给公司交待了。
为什么客户迟迟不肯进行验收?
一般来说,当软件开发项目到了具备验收的各项条件之后,开发团队就会着手准备验收阶段的工作。但如果这时发生客户不愿意验收的话,这是一个让开发团队很头痛和很普遍的问题。原因是多方面的,主要有如下几种情况:
(1)开发团队没有摆正心态:这只是小问题吗?
一个软件项目完成测试和修正后,但卡在一个小问题上客户不肯验收,这就是平时我们经常说的“小问题,大学问”。也许,许多开发人员不明白:不就是一个小小的问题吗?为什么要小题大作?实际上这样的想法是因为许多开发团队只会站在自我利益为第一位。因此,当出现有小问题时,认为多一事不如少一事,主要需求和功能能完成就行了。
因此,作为开发团队要摆正自己的位置和心态,不是说只要完成了合同中规定的内容,完成了合同书规定的工作,并且按合同测试了就可以验收了。表面上看是客户仅仅由于他们发现的一些小小的BUG,小题大作不肯验收。实际上,当客户不同意在此时验收时,他们的判断往往不是招标书、合同、技术协议、需求规格说明书等文档。而是开发团队不能给客户足够的信心,客户不满意开发团队对BUG的处理态度,客户认为这不是小问题,所以不肯验收。
(2)没有抓住领导意图,客户满意度不够
我们在软件开发验收过程中得到很多的经验教训,最常见的问题是在开发过程中没有抓住客户的关键负责人或重要领导的意图,没有了解客户看重的是什么。而等到开发团队提出要验收的时候,客户又总是觉得这也不满意那也不满意,总之是不愿意验收。主要原因是开发过程中与客户的关系没有提升,没有使客户真正的满意。例如,对客户反馈问题时服务不到位,当要求客户验收时才再发现问题仍未得到及时解决,就会让客户心存担忧,或让客户失去信任。
(3)开发流程不规范,验收标准没有达成一致
在项目开始的时候没有和客户在验收标准达成一致,导致客户总是拿项目的小问题说事。实际上,验收标准是很重要的,这需要与客户进行详细的沟通,明确验收前需要完成的工作。验收标准中不光要有需要完成的工作内容和任务,还需要有一个相对固定的工期,使双方都能朝着这个方向去努力,防止无限制的拖延。
(4)没有处理好问题跟踪记录
由于许多开发合同上规定的只是一个大概的框架,再加上在开发之前没有与用户进行比较具体的交流和讨论,没有清晰的了解清楚客户心目中的产品究竟是什么样子。结果是双方对需求都有不同的理解,例如某些需求并不是客户真正想要的,而很多潜在的需求在项目初期却没有提出来。再由于在开发过程中,没有写好备忘录和问题跟踪记录,时间一长,双方也就忘记了很多承诺和约定,到了验收的时候就可能重新翻出来。这种事情是最让开发团队头痛的,明明说可以先不做的内容最终验收的时候又成了必要条件。这样最后要验收时,大家就非常容易卡在一些理解差异的问题上了。
(5)客户因资金原因推迟验收
有时,客户迟迟不肯验收或故意推迟验收,有可能客户是以推迟验收而推迟结算和要支付的款项。对于有这种想法的客户是最让开发团队为难的了。动用法律吧,担心破坏了长久建立的关系;不动用法律吧,还真有这么不客气的客户。
什么是软件开发项目验收?
(1)什么是软件开发验收?
项目验收,也称范围核实或移交。它是核查项目计划规定范围内各项工作或活动是否已经全部完成,可交付成果是否令人满意,并将核查结果记录在验收文件中的一系列活动。软件开发项目验收是每个开发团队乃至每个开发人员都想要的结果,因为一旦验收通过就可以收验收结算款了,项目也可以告一段落。验收作为开发项目的最后一个环节,不但是对软件开发质量和软件的可交付性起到“一锤定音”的作用,而且它关系到开发团队能否收到结算款和实现利润的标志之一。
(2)项目验收的标准和要点
项目验收看似简单,但在操作上却是极其复杂和重要的工作,因为项目验收无固定统一的标准。一般来说,项目验收的标准包括:项目合同书、国际惯例、国际标准、行业标准、国家和企业的相关政策、法规。因此,开发团队对项目验收的标准情况了解越多,后期项目验收的难度和风险就越小。因此,细读项目验收的标准例如合同书是第一步,必须要先弄清楚这个是什么项目,项目合同中有那些客户关注的问题。这样才能在验收前,有针对性准备好项目验收工作。
在项目验收的时候,对于项目中可能存在的一些问题,不要让客户想等系统没有一点问题或保证以后没有问题的情况下才验收。如果客户这样想开发团队就麻烦了,微软那么牛,做的操作系统还天天打补丁。开发团队要让客户明白,所谓验收,就是依照合同需求和能够满足企业的需求,结果和预期结果一致就应该算通过了,而且还容许有一些小错误留在验收后改正。
一般来说,现场长时间验收检查不太可行。因此,在验收前准备阶段,项目负责人应主动、积极的与客户密切沟通,及时、准确地收集和理解验收条件。特别是客户对即将验收项目的真实、初步意见和评价,最好是在验收前就沟通好和形成书面正式的《项目评价报告》。如还留有一些可能影响或暂时不影响项目整体验收通过的细节、小问题、变更或异议、分歧等,应与客户协商解决处理好,做到事先沟通、达成共识。强调已经基本上完成项目内容,满足合同要求。
如何顺利地让客户进入验收状态?
如何才能顺利地让客户进行验收是一直困挠开发团队的一个难题,为了避免项目验收遥遥无期的局面,建议加强以下几方面工作。
(1)及时解决问题,端正处理BUG的态度
既然发现软件存在问题,就应该尽力去解决,这是开发团队的责任。客户不肯验收,主要是害怕承担责任,毕竟还有问题没有解决嘛。如果换做我,我也不会给你验收的。因此,要想让客户方验收,首先要做好合同的明确规定和服务承诺。并以此为依据,让客户放心,让客户方验收。在开发过程中给客户感觉是不是用心的做事是很重要的,否则的话后期验收就会有点困难了。
在项目过程中,需要注意平时承诺的积累,比如要做到讲诚信、讲原则。主要是三条:做不到的事情千万别随意承诺、承诺的事情一定要努力做到、每次做到的事情都要进步一点点。按这三条做事,即使在与与客户沟通中有这样或那样的不愉快和矛盾,客户也会慢慢接受,也会用更多积极性眼光看存在的BUG问题。当然,项目中如果有关键瑕疵,也是客户忌讳的,开发团队一定要理解这些瑕疵并解决好。
(2)平衡和识别项目干系人需求
在项目验收阶段前,要尽量识别和关注所有项目干系人的需求和态度,并时刻给客户灌输只要完成那几项工作就代表项目可以验收了。当客户不肯验收时,要与客户展开深入的交流,明确客户为什么不愿意验收。有时客户的问题只是借口,所以要根据客户的表现判断出这个背后的问题所在。当找到问题后,协调相关的资源来解决。有时和客户直接把问题摊开沟通,或许是比较好的解决方法。
总之,开发团队应要对项目利害关系者进行关注,和关注他们关注的内容,或者他们担忧的内容。作为开发团队要做到尽量做好所能控制的事情,另外一些很难由开发团队控制的事情则需要借用一些其它的力量去完成。比如关注项目利害关系者的一些秘密需求是否得到了满足,或请高层领导运用一些商业手段来促成项目的验收等。
(3)重视阶段性成果验收,提高客户感知度
其实,软件开发项目验收远非是仅仅对系统的测试和检验这样简单,它是开发团队和客户在开发过程中双方合作博弈的结果。因此,在项目开发过程之中,与客户的沟通和绩效汇报是非常重要的。客户之所以迟迟不验收项目,简单的说是因为客户对开发团队做的项目不满意。
一般来说,满意=感知-期望。因此,客户不满意是因为客户的感知度非常低,而期望很高。换句话说,是由于开发团队对项目需求没有定义好,或者没有分析好,或在定义需求的时候没有考虑到客户的感知和期望,导致现在的项目验收困难。所以,一方面量化和降低客户的期望值,另一方面尽量提高客户的感知度是非常重要的。方法可以是对于每一个阶段性的成果,尽量让客户可以参与并且验收,目的是为了尽可能来提高客户的感知度。
(4)清晰处理好客户反馈问题的跟踪状态
在一个项目开发周期中,每次客户的反馈问题都需要认真做好跟踪记录。下次工作要根据前次备忘录的双方约定或客户的反馈问题继续进行,保障项目在双沟通的基础上不断前进,并用备忘录约束双方的行为。
建议在收集项目出现的各种问题时,采用问题跟踪记录表的形式,这样可以一目了然地显示出曾经收集到的各种问题、目前的解决情况、以及还有什么问题没有解决,或准备什么时候解决。这样客户和开发团队就都会对目前的情况非常了解,通过不断地解决出现的问题,来收敛可能出现的问题。当存在的问题越来越少时,也就表示项目开发已经在接近验收的标准了,也可使客户在需要验收的时候不能再找各种各样的借口来拖延验收。
====================================分割线================================
最新内容请见作者的GitHub页:http://qaseven.github.io/