财新传媒
位置:博客 > 万战勇 > 我在谷歌弄啥咧之六:小广告

我在谷歌弄啥咧之六:小广告

这一次讲讲我和厕所那些不得不说的往事。前方高能,大家准备好了啊!深吸一口气,我要开讲了......
 
测试小分队做的另一件改变谷歌文化的事是“马上测”(马桶上的测试)系列宣传:每个星期,我歌各个厕所的蹲坑前都会贴上一张新的传单,介绍经典或是最新的测试技术。这个系列到今天已经运作了差不多十年了。很多人可能不知道,这完全是一个草根行为,从组织、写稿、编辑到张贴都是由关心公司代码质量的志愿者利用自己的20%时间完成。Mike Bland有 一篇长文介绍这个系列的历史和八卦,内容非常详尽,强烈推荐对我歌文化感兴趣的同学仔细阅读。
 
简单地说,2006年初,队长Bharat Mediratta在一次小分队会议上开玩笑说我们应该在厕所里贴传单宣传测试技术,大家一阵爆笑之后,当成行为艺术在会议记录里写下了这一条。没想到一位伦敦的同事Joe Walnes决定真干(难道因为他是轮蹲来的?),于是这个系列就开始搞起来了。刚开始有的同学还不太习惯,不知道这是弄啥咧。久之这个活动就形成制度了,基本上每周一期按时推出,到现在有400多期了,估计当初大家都想不到会坚持得这么久。后来这一形式甚至传播到了外司。我看到过网上流出的某公司高仿版“马桶上的测试”,内容是介绍gMock(我领头做的一个和gTest互补的C++测试工具)的用法,呵呵。
 
在“马上测”活动的早期,我贡献了多篇闯作,普及gTest的用法。所以,称我为我歌厕所文学的先驱大家不会有什么异议吧!此外,有一年多的时间我还负责在柯克兰办公室张贴这些传单。老人们可能还有印象:无论是寒冬还是酷暑,每到星期一,一个猥琐眼镜男都会揣着一叠传单,鬼鬼祟祟地穿行在各个厕所(精确地说,是男厕所)间,转战在蹲坑和小便器前,在旁人好奇或怜悯的目光下,揭掉上周的传单,再快速贴上新的一期。有时蹲坑有人,还要过一段时期再来试一次。其实,我的心情是很紧张的,生怕旁边的大哥关注我的行动出了神猛一转身滋我一身。有了这样的经历,以后写不动代码了我回国替人贴小广告也可以谋生了。
 
这个活动并非一直都是喜大普奔一帆风顺的。有人曾经激烈地向我们抗议,认为我们的做法是对员工个人生活空间赤裸裸的入侵,让他在谷歌不能愉快地拉粑粑了,要求高层领导把我们的非法出版物赶出厕所。我们的队长Bharat同学这时展现了他的领导风范,面对压力据理力争,不卑不亢地指出:厕所文化这个阵地,测试技术不去占领,其它歪门邪道就必然要去占领。所以,还不如我们去占领。何况,我们只是提供一些阅读材料,你爱看不看。实在不想看,你还可以刷微信啊!最终,我们赢得了这场战斗。
 
2007年,我推出gMock的时候,又借助“马桶上的测试”做推广工作。因为同样形式的传单写多了感觉太单调,我想在形式上有个突破,但具体怎么搞一时也没啥好主意。某天突发奇想,为啥不用漫画的形式呢?肯定吸睛啊!就是有一点小问题:虽然我小学三年级参加过美术兴趣小组,这么多年全还给图画老师了,要我画画除了王麻子跳井跟丁老头我也不会啊!那有没有不会画画也能搞的美术呢?对了,我司八年多以后不是要改名为字母表吗?咱可以用字符来拼图啊!
 
大方向定下来后,执行就好办了。经过反复试验,我生造出了两个卡通形象:gTest的吉祥物,一个叫悠尼(Uni)的尖头独眼机器人码工,还有gMock的代言人,一只名叫莫卡(Moka)的程序猿。虽然很山寨,还算喜感。他们两个前后出现在两期“马上测”中,为发展gMock用户作出了贡献。
 
下面这张是我为第84期“马上测”写的文章《如何温柔地测试老代码(Testing Legacy Code Gently)》配的插图。这一期讲的是如何用gMock让一个年老失修的系统逐渐变得可以测试。故事设定的场景是悠尼的飞碟因为没有好好测试,被摔坏了,莫卡给他支招,最后悠尼新技能get。对话如下:

1. 莫卡:你今天看起来不太爽啊。咋搞的,悠尼?
    悠尼:逊!我新造的飞碟呀,摔坏鸟!呜呜呜。。。
2. 莫卡:忒背了!诶你不是测过了吗?
    悠尼:测倒是测了,没测紧急着陆那块啊!那个俺不会。。。
3. 莫卡:我懂了!你可以用“依赖注入术”啊,模拟紧急情况轻松搞定!
    悠尼:那俺岂不是要给系统加个新接口?改动太大我好怕!
4. 莫卡:嗯,我想想。。。要不你用模拟回调函数试试?这个改动小,只要如此这般便好:。。。
    悠尼:我稀饭!欧耶,莫卡!


 
接下来这张是第96期文章《测试结果早知道(Expect Faster Turn-Arounds)》的插图。他们说的是:
 
1. 电脑:哔哔,哔哔,哔哔。。。
    悠尼:额滴神位(Holy bit)!一大波测试挂鸟!不赶紧修好天会塌了呀!
2. (一小时后)悠尼:啊~~!编译这么慢啊,我不要活了啊~~!
3. 莫卡:每次编译只修一个断言太没效率了吧?一次多改几个啊!
    悠尼:哦?咋搞?
4. 莫卡:用EXPECT,不要用ASSERT。这样一个测试就可以同时报多个错啦。
    悠尼:太赞了!
 
 
很多游戏里面,玩家完成一定任务过后可以获得一个奖章,还会有一个页面展示玩家得过的所有奖章,激发大家玩游戏的热情。我歌有同学把这一思想实现到了公司内部的员工个人主页上:当你取得了某项成绩(比如面试了一百人,提交了1000次代码,等等),系统就会给你的页面上加一个奖章。这么搞一开始主要是好玩,后来一些内部的工具组加入进来,用这个平台给它们的用户发奖章。我也用Moka的形象做了一个奖章 ,每周发给一批gMock的新用户。一直到好几年后我不再做gMock工作了,还不时有人问我如何才能得到这个奖章。



推荐 65