经常我面试都会问面试者这么一个问题,怎么才能保证产品的质量?但是往往大部分面试者都说做好测试,但事实上是这样吗?我相信对软件工程有一定了解的人都会肯定的说不是。测试只是产品质量其中关键一环,也往往是大部分公司定义的最后一层保障。但实际上要保证产品的质量,远远不应局限于测试。
在谈这个话题之前,我们应该了解软件与产品的概念。我认为任何用计算机语言编写的,带着某种功能并可执行和操作的程序,都可以称之为软件。而带着商业性质的,面向特定消费群体需求开发出的软件称之为产品。软件和产品可能没有过于明确的界定,但我固执的认为产品是可以满足特定人群普遍认可,并愿意付钱买单的软件称为产品。
首先,产品的质量在于真正的了解用户的需求。如果需求本身对于用户来说就是错误的,或者是不满足其要求的,哪怕开发、测试的质量把控的再好,也不能说明这是一个质量好的产品。顶多算是一个质量好的软件,不能为公司带来更多的商业回报。原来参与过一些项目,有些可能完全属于闭门造车,想当然的认为用户需要的是什么,没有经过市场、用户调查就草草的罗列出一大堆需求。当花费大量人力,物力开发出来,真正投入市场后,才发现愿意买单的人寥寥无几,让团队士气大挫。
然后,要把控好设计质量。现在人们对于一个产品的好坏评价大部分建立在感官和操作上。业务设计的再好,如果界面设计效果差,导致用户体验性差,一样不能称为一个高质量的产品。所以也难怪现在一个经验丰富的UI或前端设计工程师是那么的抢手。当然设计不止业务和界面的设计,还有如架构、数据等的设计。
在后,就是要控制好开发质量了。我相信有相当部分公司的开发人员都有这么一个心理,反正测试有专门人员,我只管开发然后扔给他们测试就好。这在年轻的团队中非常常见。大家都知道,往往测试发现的问题越多,那么隐藏在软件中潜在的缺陷也越多。如果开发人员都没保证好自己的代码质量,甚至可能连起码的debug都没有做,可想这质量能好到哪里去。笔者原来就经历过,一个测试迭代了三、四轮了,测试出的bug依然不见减少,出现的bug反反复复,而且一些bug低级的让人气的跳脚。最后做出了强制性规定,开发人员必须在测试之前进行自测,如果发现低级问题过多,版本直接打回去。这样规定以后,后面经过两三轮迭代后,bug终于正常的呈线性递减。金玉其外败絮其中,软件也是一个道理,里面一团糟,外面包装的再好也不可能让用户买单。
其次,才是软件测试。这也是大部分面试者给予的回答。相信做过一段时间的测试,这块或多或少都有一些自己的见解。比如掌握常见的测试方法,设计有效的测试用例,做好迭代测试,做好bug管理等等。
再次,一个产品的质量好坏还在于提供服务的好坏。现在都提倡服务至上,如果产品做得再好,而相应的服务跟不上,最后也会导致产品的失败。有可能用户碰到的都是小问题,也不是软件需要考虑的。但如果得不到及时的解决,可能就会导致用户的大量投诉,最后缺乏对产品的信任,导致前面的努力毁于一旦。
最后,做好项目管理。团队中充满优秀的技术人员不一定会作出优秀的产品,但一个质量好的产品必然有个优秀的团队。一个团队的好坏,往往更多体现在项目管理上。如做好项目计划,提前规避风险,做好配置管理,做好管控等,这些都应该囊括在项目管理中。这里就需要项目团队中每一个部分都能紧密合作,建立好良好的沟通渠道和合作规范,从而形成一个有机的整体。项目管理有太多的学问,如果大家希望将来成为一个优秀的项目管理人员,不妨多花些时间学习下。
在结束,我想说做好几个软件不如做好一个产品。也希望相当部分公司去掉迫切希望获得回报的浮躁,沉下心来,好好打造自己的团队做好产品,也就是经常口头上说的,好好落地。