一直埋头工作,突然间忽视了这个重要的问题——谁是我的客户?
我们通常理解的客户是指组织外部的客户,我们要将我们的工作成果交给他/她,当然工作成果也称为交付成果,需要令客户满意,不然,客户是不会买帐的。根据工作成果为了令谁满意,客户还有其更广阔的意义。
组织内的个体也都有自己的客户,而且有的,客户不只一个。对于组织内个体来说,可能心里最大的客户是他/她的上级领导,也许还有人的客户是自己。
对于一个项目负责人来说,除了上级领导,心里的客户还有外部客户,外部客户的满意度也会影响上级领导的满意度,有时候心里最大的客户是谁,恐怕连自己也分不清。但是,你对客户满意的在意程度,绝对会影响到你工作成果的质量。
软件开发项目是由一个个过程和流程组成的,需求分析-->设计-->编码-->测试,最终提交给外部客户的成果的质量,不是说哪个过程来决定的。如果每个过程的主体把下个过程看作自己的客户,非常在意下个过程对自己成果的满意度,那么我们能够在整体质量上得到提高。
不过,我看到的现象(虽然是少数,但足以造成大的影响)却不是如此。写出来的设计书,实施人员没办法实施;做完的代码自己没有调试,就交给测试人员,连基本功能的正常运行也不行。
我曾经在大家面前说过“SQA是为项目服务的,SQA的目的就是要确保项目成功”。那时候我更看重的是项目组对SQA工作的理解。但是后来,渐渐地,发生了微小的变化,但是这个变化的后果却是严重的(至少在我看来是这样)。原来说的,SQA是为项目服务,后来被理解成了“SQA为项目组服务”,我请项目经理来对SQA工作提点意见,结果产生了“SQA是为项目经理服务”。天啦,我竟然做出这样的事情,SQA是为项目经理服务!?很明显,SQA(软件质量保证)是为了确保最终客户对项目的信心,应该是站在外部客户的角度来工作的。如果说是为项目经理服务,那么有点曲解了SQA,应该换个职务名称,比如叫“项目经理助理”之类的,以免玷污了SQA的名号。
一直以来,项目经理面对的外部客户是XX公司。对于提交成果物给XX公司测试时,总是小心谨慎,唯恐出错。而开发提交成果物给北京内部测试组时,情况却并不是这样。提交前,开发动作是尽可能快,不管有没有问题,先按时间做完了再说,有问题等到测试阶段的时候再来解决。对测试组的看法就是:我给你的程序肯定有错,你给我找出来,不找出来,提交到了XX公司出了问题就是你的错。测试人员无话可说,找bug就是自己的职责,没有给予权利来说程序的好坏,测得好,开发表扬你几句,最后功劳都算开发的,要是漏调几个bug,让XX公司测到了,那就不得了,项目质量不好头个就说测试人员水平不行,“为什么别人能测到,你们测不到”,有一点被忽视了,真正造成bug的不是测试,而是开发,当然这并不是说测试没有责任。
然后就有开发开始来指导测试,该怎么做怎么做,测试成为了开发的下属。测试开始害怕开发了,开发变成了测试心中真正的客户,测试人员感觉这些bug都是自己的错,没有了对找到bug的成就感,唯一的感觉就是找到一个bug,被开发骂的几率少了一点。不过,当被骂得耳朵生了茧,或者防线崩溃了的时候,也就连最后一点愧疚的心理也没有了,有的只是对立和厌倦,没有被发现的bug会越来越多。
既然大家对开发出来的程序肯定会存在Bug勿庸置疑,为什么就不能理解测试必然会有漏掉的Bug呢。换句话讲,如果要求测试不能漏掉一个Bug,是否也可以要求开发不要产生一个Bug呢。开发可以说,代码质量不是一天可以变得基本没有Bug,那么测试减少漏掉的Bug也是非一日之功啊。所以,开发不用指责测试,测试也不用指责开发,因为大家都半斤八两。
我们应该给予测试权利来评判开发提交的质量,如果没有达到标准,有权要求返回处理,达到要求后再开始测试,测试提交对软件质量情况的报告,这个报告应该作为组织对开发的情况评判的重要依据。也许这样能够让开发把测试看作是客户,而不是下属。测试人员的地位也会提高,到时,测试部门(或者说质量管理部门)也就不会是谁都不愿意去的地方,或者被当成收容所了。