今天刚好微信收到这么一个问题:怎样带领质量团队持续地深耕,具备工匠精神?发现真心是个好问题。这也是我一直的努力的方向? 所以,我真不敢承认我做得有多好。这里我就抛砖引玉,把我平时的思考跟大家分享下。
招聘
首先我觉得,一切的起点在于招人,招的人要有有内驱力,否则下面说的一切都是徒劳的。这也是我最近听了段念老师在ArchSummit2016讲的课程引发的思考。内驱力就是在没有任何外部压力的情况下,自发把事情做好,这种自发可能出于责任心,出于好奇心和兴趣。说这么多,不如举个例子,鄙人就是内驱力极强的人。怎么说呢?在大学刚毕业的时候,普普通通的一名测试工程师。刚入职,除了手工测试之外(PS:这里我没有忽略手工测试,相反,当时我发现的新旧功能的BUG并不比别人少),且我比别人多做一件事,业余时间看NOKIA开发相关(当时做的是Windows Live for Nokia的测试)的书。这一切源于我总觉得事情可以做得更好。那时我就开始自发地思考为什么不能自动化测试。最后被老板发现了,让我参与开发基于Nokia的UI自动化测试框架,也是第一个被外国老板赞赏的新员工。对于技术一般般的我,最值得我自豪的应该就是我的内驱力了。映射到现实,内驱力除了管理成本降低外,在质量团队尤为重要,甚至在个人认为,比技术,编码能力更重要。因为在国内,质量团队的工作环境,哪怕是纯粹执行测试用例就已经劳心劳力了,如果一切都是点到为止,不谈内驱力,哪怕你招聘麻省理工毕业的,想再进一步在技术上研究出解决方案,完全就是无从谈起。
提供目标
如果招聘进来一个有内驱力的人,那么给这个人一个喜欢的目标,是一切的开始。例如像我们专项测试,可以给定的目标就是成为一个能独当一面的专项测试专家。可以让大家一起畅想下,这样的专家要是什么样子的?
要想象专家是什么样子的,视野会是一个制约因素。在这点上,我的做法是分享我觉得不错的技术和对技术思考的文章给团队的成员,也会争取提供他们跟其他团队交流的机会,以免变成井底之蛙。
努力的过程
有了为之努力的目标,那么过程中又能做什么呢?不断从各个角度提醒目标不用说了。更多的应该是提供磨练的机会,这里有几个我常用的方法。
1. 问5个为什么?
什么是“5个为什么”呢?那是引导员工深入思考,抓住问题本质的方法,这样才能有真“磨练”。举个真实的例子, 当年我们在做Monkey的外网CRASH命中排查,就有这么一幕。
问:为什么这个表层的空指针CRASH我们Monkey没有发现
答:命中了,但是是发布之后Monkey才发现
问:这个BUG容易重现吗?为什么发出去才发现?
答:容易。但因为有编译等过程,导致我们实际测试这个发布包的时间只有2小时
问:这个BUG是最后的发布包引入的吗?还是什么时候引入的?
答:从SVN记录里面发现,发布包就是修改了一些crash。后面有很多ci记录,很难追溯。
问:最近的CRASH修改记录就为了修复什么CRASH?
答:排查了具体代码,发现这个修改记录,修改的是同一个全局变量的空指针问题。所以按这个道理,应该是没有改完整,导致block住我们发现同一个界面的CRASH了。
问:为什么这个变量之前不是空的,现在是空的?
答:追溯了SVN记录,发现在修改一个内存问题的时候,开发多手,把这个全局变量赋空了,然后就连着2例crash,都是空指针保护就了事。
问:后续有什么跟进的方案?
通过不断提问,挖掘事情的真相,才能找到解决问题的真正解决方案,发现技术可以落实的地方。
2. 重视解决方案
在专项测试专家这个目标下,大家认真想想都会明白,只是发现问题,而不思考整体的解决方案是没有用的。如何思考整体解决方案呢?我通常会从下面这4个角度给予指引,持续产生深耕的动力。
角度1:解决方案包括发现问题,定位分析,解决问题,效果衡量
通常普通的测试,都会就如何发现问题就点到为止。而不去思考如何定位分析问题,解决问题。而更重要的是效果如何衡量。例如内存问题,我们有了内存泄漏的发现方法,还要总结如何定位分析,归纳解决方法,最后还要思考,利用内存触顶率来衡量效果。
角度2:解决方案包括源码编写,编译集成,测试调试,发布运营
这是我们老板宣导的分层测试的概念。别看寥寥可数几个字,但是真的可以引发思考。大家不妨套下自己的工作,是不是每个阶段的照顾到了。
角度3:对比竞品的优势与劣势
通过对比竞品,思考和完善技术方案。例如我们做的内存泄漏探测方案,就跟LeakCanary做个竞品。
角度4:思考本身的技术分解
例如AR技术,作为新技术,可以分解对于视频采集,视频定位跟踪,3D渲染合成组成。然后就可以对于各个点技术进行逐个击破。
3. 认可结果
一切的技术都要基于业务的痛点,或者对未来业务痛点的预防和解决,这是基础。有了这个基础,才能达成闭环,让技术研究的成果,可以有被认可的价值。后面的事情就是,作为Leader的一个最大的责任,就是让成果发挥更大价值。要做好这个事情,可以组织部门和公司外内的相关分享,可以让其发总结给老板,自己主动回复邮件表示赞赏等等。
最后,期待大家对这个问题的最佳实践~