财新传媒
位置:博客 > 老万故事会 > 【老万】我在谷歌弄啥咧之十四 - 拿奖到手软

【老万】我在谷歌弄啥咧之十四 - 拿奖到手软

微信里面有一种神奇的存在,叫做夸夸群。
 
一旦不慎落入了这个团体的魔掌,就会被夸得欲仙欲死,欲罢不能。
 
你就是放了一个屁,群友也能夸出二十多个花色品种,一个赛一个的争奇斗艳。
 
 
武大郎在这里会发现自己是玉树临风的妇女之友。
 
强东叔在这里会醒悟自己是冰清玉洁的道德楷模。
 
不过,这都是花钱买的服务。钟点到了,你会立马从平行宇宙被踢回现实,四顾茫然,急火攻心,感觉所在的并非天上人间。
 
这时,不怕你不续钟。
 
在谷歌,也有一种相似的存在:整天有人变着法子对你交口称赞,而且分文不取。
 
今天我们就带着疑问,走进谷歌看一看,这到底是怎样一种变态操作?
 
~~~~
 
外界对我们程序员常有一些刻板的印象:格子衬衫,一聊就尬,钱挣得多,人死得快。
 
我建议,美女们要抱着求实的态度,亲自下场考察一下,不要再以讹传讹了!
 
跟程序员同吃同睡久了,你会发现:程序员骚起来,屈原都怕。
 
比如说,有个擅长用汇编语言写保护模式代码的程序员,用自己开发的字处理软件写小说,一不小心跨界拿了《联合报》文学奖中篇小说大奖,死了二十多年还被人当成写字界的标杆。
 
他就是王二王小波。
 
虽然王二坐实了“人死得快”,但是他没有格子衬衫啊!
 
再比如,有个白天堆 C++ 换钱,半夜里引颈高歌还尽写一些自以为好笑的故事会的中二男性程序员,他叫老万。
 
老万有格子衬衫,可是他钱儿挣得不多啊!
 
程序员多了,难免混进来几个刚识文断字儿就沾沾自喜的文艺青年和文艺青年爱好者,整天想着搞事儿。谷歌的文化就是被这样一群闷骚的程序员带歪了。
 
他们搞出来一个东西叫夸夸墙。
 
~~~~
 
嘛是夸夸墙?
 
还是在上幼儿园的时候,我就表现出了和年龄不相称的成熟,知道表现乖了就会得到老师的夸奖,在墙上自己的名字旁边贴上一朵小红花儿。
 
得了小红花是很长脸的事情。有一天我得了三朵,接下来几天在女同学面前腰板都挺得笔直,感觉接下来顺理成章小红就会是我的了!
 
快进四十年。
 
我忘了小红,可还没忘小红花。
 
我歌的内网叫磨码(Moma)。每个人在磨码上有一个主页。
 
主页上,除了自己的工号、素颜照、电话和简历这些无聊信息,还有一个栏目是给大家脑洞大开寻开心用的。
 
这就是夸夸墙,专门贴大家互相发的小奖牌儿。
 
老万夸夸墙局部
 
如果要脑补,可以想象这样一些个北韩的将军,胸前挂满了奖章。
 
 
或者是创造过获奖吉尼斯记录的奖牌爱好者苏联同志勃列日涅夫。
 
 
在我歌,如果你跟老勃同志有一样的嗜好,可以在夸夸墙上给自己发各种奖章。
 
只要你敢发,公司就敢贴。
 
欢迎有赖煞西施(洋文叫 Narcissus)情结(文艺青年是不会写成“情节”的!)的同学来到我歌,我们可以极大地满足你的人之常情。
 
不过貌似目前还没有出现这样的变态。
 
一般啊,都是以给别人发奖章为名,羞答答地把自己捎上:
 
“哎呀,不好意思,我就想学雷锋造福人民来着。没想到,自己也是人民的一员啊!”
 
~~~~
 
那么这个奖章怎么发呢?
 
首先你得先有一个图标。就像手机 App 那种,四四方方一小块。也可以是动图。
 
然后把这个图标上载到奖章服务器。再写一小段代码定期更新获奖名单。
 
谁中了招,谁的夸夸墙上就会出现这个奖章。
 
美中不足的是没处发表获奖感言。
 
除非是像老万这样憋不住了写成文章发公众号 -- 有人敢封微信我第一个跟他急。
 
因为经常有程序员出于各种动机造出新奖章来,过一段时间自己的夸夸墙上又会冒出几个没见过的玩意儿。
 
前两天一数:乖乖,我竟然已经荣获332枚奖章了!
 
这些年,没想到著作没有等身,钞票没有等身,奖章先等身了。
 
得亏是虚拟的,要不然还不得把我活活坠死啊!
 
这么多奖章,要搞清楚它们都是干啥的殊为不易。
 
你得把鼠标放在一个奖章上面,稍安勿躁。
 
这时就会弹出一个小气泡,里面装着这个奖章的简要说明。
 
要是看了还不明白,那就戳一下鼠标,看详细说明。
 
通常,奖章的作者会告诉你:他们是吃啥撑的,用哪个算法决定获奖人。有的还会告诉你,整个Google 有多少人得了这个奖。你可以由此决定它的含金量。
 
~~~~
 
程序员的主业是堆代码,所以很多奖章都是关于代码的。这里先介绍一些术语。
 
我歌的源代码管理系统是基于 perforce 的,跟微软的 source depot 同款。每次写完代码要提交,先得创建一个 change list,简称 CL。
 
一个 CL,就是一组你修改过的文件。
 
如果你习惯用 git 管理代码,可以把一个 CL 想象成一个 PR(pull request)。
 
如果你用的是 svn,那么一个 CL 就相当于一个patch(补丁)。
 
源代码管理系统会给每个 CL 分配一个序列号,你猜叫啥?
 
当然是叫 CL 号啦!
 
这个号从 1 开始,挨个往上涨。
 
比如,也许张三丰昨天提交了一个 CL 是 1337666 号,李四光今天又提交一个 1337888 号 CL。伍佰同学明天说不定交个 1473692。
 
这个 CL 号就跟 QQ 号一样,本身没啥意义,但是无聊的人类会牵强附会地硬塞给它们一些内涵。
 
比如说,10,000,000 这个靓号就属于一个跟我合作过的纽约同事。
 
因为 CL 号是系统按顺序分配的,每个人都有机会。每次一个靓号快要出现的时候,就有一堆闲得蛋疼的家伙开始疯狂创建 CL 刷号。
 
刷到靓号的人,一般都会初闻涕泪满衣裳。
 
然后他们会漫卷诗书喜欲狂,在 CL 的描述区用字符串作画一幅留念。人不嘚瑟枉码工。
 
比如前面说的第一千万号 CL,说明文字里就出现了这个:
 
 
隔着屏幕我都能感受到作者的欲说还羞:快来看啊!俺的 CL 那叫一个美啊!
 
在我歌,嘛都是数据:每个人的级别、工位、写了哪些代码、审查了哪些 CL、做了几次面试,都放在数据库里等人来挖。
 
工程师们绽开他们的想象力,在数据的海洋中大力挖掘一切闪闪发亮的东西。
 
是金子总会挖光的。
 
要是一个人在我歌都得不到奖,那他得有多 low 啊!
 
~~~~
 
为了大家对我司的中二文化有个感性认识,我凝视了自己的夸夸墙,挨个排查,看有哪些有(gou)意(bian)思(tai)的可以跟大家分享。
 
我发现,有一大类是引诱大家多干活的老黄牛奖。比如:
 
我平均每周贡献了 10 个以上 CL。
 
从 0 点到 23 点,我一天中的每个小时都提交过 CL。
 
我在 2 月 29 日提交过 CL。(跟奥运会一样,错过一次就得再等四年了。)
 
我在一天之内提交了100 多个 CL。(真的吗?)
 
我曾经连续25天周末无休,每天都提交代码。
 
我提交了超过 1000 个增强代码健康的 CL。
 
7-11奖章:连续一周7天,每天至少11个小时,我每个小时都有提交 CL。
 
我提交了超过 5000 个CL。
 
一年有 366 个日出,我每个日子都有提交一个 CL。(这个全司只有50多人做到了。喂,老板你看见了木有?)
 
别人都在休假我还在提交 CL。(老板,看过来!)
 
我惨遭过半夜(呼)机叫。
 
我在同一秒钟提交了两个 CL。(考虑到从申请提交到系统跑完测试实际提交还有一段长短不齐的延迟,要想同时提交俩 CL 还真得有点运气呢。)
 
我在一周之内用三种不同的编程语言提交过代码。
 
我总共用超过 20 种编程语言提交过代码。
 
我删掉的代码比我写的还要多一万行。
 
(日久天长,系统里会积攒一些过时的用不到的代码,留在那里就是祸害,删掉它们才可以轻装上阵。
 
很久以前公司开大会,创始人之一拉里严肃提出:对代码要像秋风扫落叶一样,每个人都要争取删得比写得快。
 
话音未落,另一位创始人谢尔盖举手:删到公司只剩一行代码的时候该如何再前进呢?)
 
我提交的一个 CL 被十个人审查过。
 
 
我的代码被 2000 多人审查过。
 
我审查过超过 8000 个CL。
 
我在审查某个 CL 时挑了超过100个毛病(求被审查人的心理阴影面积)。
 
我发现了 2000 多个 bugs。
 
我修好了 1000 多个 bugs。(对比前一个奖,大家可以计算一下我的心理阴影面积。)
 
我有个 bug 用了超过 50 个 CL 才搞定。
 
我一天面试了 5 个人。
 
我一周面试了 20 多个人。
 
我一共面试了 200 多个人。
 
我收获了超过五万年的经验值。(如果某人的谷歌工龄是 5,他每次审查一个 CL 就会传给被审查人 5 年经验。依此类推。)
 
我改拼写错误超过了 99% 的同事。
 
。。。
 
不能再列了。再列大家就会因为羡慕嫉妒恨取关了。
 
还有一大类奖是流行文化哏。
 
(作为语言洁癖我要特别声明:是哏不是梗!是哏不是梗!是哏不是梗!每次看见有人写“梗”我都耿耿于怀如鲠在喉哽咽难言。
 
终于喊出来了,舒坦啊!)
 
比如:
 
我在星战日提交过 CL。
 
(每年五月四日都是文艺青年欢呼雀跃的日子。你们知道为什么吗?
 
对了,因为这是《星球大战》日。
 
原因么,是因为星战里面的正派人士在分手的时候总要 BB 一句:袁立与你同在(May the 4th be with you)!)
 
原力的黑暗面(dark side of the force)奖:我 force 提交的 CL 悲催地被回滚了。
 
钢铁侠奖:我在同一个目录下提交了超过 120 个CL。
 
(这个哏是这样的:Tony 老师被恐怖分子关在一个山洞里,反复捣饬,千锤百炼,终于攒出了第一代铁人盔甲逃出生天。
 
这是什么破哏!)
 
我在13点37分提交过 CL。
 
(为啥 13:37是个哏?
 
原来,在互联网早期,歪果仁玩 BBS 的时候,为了躲避管理员的审查,用谐音或者象形的修辞手法来避开一些敏感词。比如 p0rn(簧片),g4m3(游戏)。
 
敢情和俺们一样啊!
 
Elite(大牛)这个词,则被谐音成 leet,再进一步象形成 1337。
 
所以,1337 就成了“牛叉”的意思,类似于俺们中文的 666。)
 
我有个 CL,位数是 007。
 
(一千个读者就有一千个哈利波特。一千个 CL 就有一个詹姆斯邦德。)
 
忍者神龟奖:我写了一个Java类,它的名字是如此诡异,以至于可以和着《忍者神龟》的主题曲唱出来,轻重音都不差毫分。
 
(这个奖章的作者还真地写了程序分析单词的轻重音,和原词挨个配对。)
 
还有一类奖是理呆哏,谢耳朵看了会发笑的那种:
 
我有个 CL 号,在计算器上倒过来看包含一个5个字母的英文单词。(举例说明:把 07734 转 180 度看就是 hELLO。)
 
我的姐夫丁数是一。(说明谷歌大神姐夫丁摸顶过我的代码。)
 
马里ML奖:我有一个 CL,增加/修改/删除了相同行数的代码。
 
(在我歌的代码审查系统里,用绿色代表增加,黄色代表修改,红色代表删除。
 
如果一个 CL 增加了 N 行代码,同时修改了 N 行代码,还删除了 N 行代码,它的图标就成了马里的国旗:ML,三条等宽的带。 )
 
我的奖章数超过了 90% 的员工。(这下不就更多了么?马太效应之初体验。)
 
我有一个 CL,它的描述里面包含了所有英文字母。(得亏是英文。要是想包含全日制小学五年级学会的所有汉字,我还不得写本《平安经》啊!)
 
我在第 14 天被 LGTM 病毒感染:任选一个 CL,把它的作者当成零号病人,每次一个病人审查一个 CL的时候,就会把 LGTM 病毒传播给这个 CL 的作者。
 
(在这个模型下,30 到 40 天过后大部分谷歌工程师都会被感染,实现群体免疫。
 
我是第14天被感染的。看来要么我写的 CL 比较多,要么我靠代码界的武汉海鲜市场或者新发地比较近。)
 
还有一类是程序员喜闻乐见的数学哏。
 
离散数学是计算机科学的基础,所以程序员中数学民科的浓度比较高。他们会在数字中发掘出无穷无尽的段子。比如:
 
我有个 CL,尾数是 1414(根号 2 的前四位数字)。
 
我还有个 CL,尾数是 2718(自然对数底 e 的前四位数字)。
 
我又有个 CL,尾数是 1618(黄金比例 φ 的前四位数字)。
 
我再有个 CL,尾数是 31415(这个祖冲之都知道,圆周率 π 的前五位数字)。
 
我更有个 CL,开头是 11235(斐波拉契数列的前五个元素)。
 
非十奖:我的奖章数不是整十。
 
(老万陷入沉思:要是某人本来有 69 个奖章,那就得发给他一个“非十奖”。可这样一来他就有 70 个奖章,那就必须收回“非十奖”。收回来了吧又得马上给他。这这这。。。)
 
欧拉奖:我的工号在自然对数底 e 的前 20000 位中出现过。
 
(因为大数学家欧拉的关系,e 又叫欧拉数。
 
大家都知道这个欧拉常数对现代文明有相当重要的意义。不信你把 “e 了么” app 卸了试试?
 
试试就逝世。
 
以前不知道没关系。现在开始记住:欧拉奖,是和诺贝尔奖、金鸡奖、图灵奖并列的代表了人类文明最高成就的四大奖项之一。
 
我目前只获得了其中一项,离大满贯的目标还有一定距离。我会努力哒!)
 
全叉奖:我提交的全部 CL 号写成逆序二进制数可以覆盖深度为10的完全二叉树。
 
(这个,为了大家的身体健康就不解释了吧。总之跟我选“老万牛叉”就对了!)
 
还有个好玩的:我有个 CL 号,出现在格拉汉姆数(Graham's number )的最后一万位。
 
(这个格拉汉姆数是数学家罗纳德・格拉汉姆(Ronald Graham)在研究图论中拉姆塞(Ramsey)理论时得到的一个理论上限。这是一个很大很大的数,曾一度保持了“数学证明中用到的最大的数”的吉尼斯记录。
 
有多大呢?大到用十进制写出来没地方搁。
 
什么意思?
 
比如说,我们试着把这个数用很小很小的字写出来,小到每个字只占用边长为一个普朗克单位大小的立方体那么一点儿空间(这个 Planck 单位相当于0.00000...016米,小数点后有35个零,是理论上可以测度的最小尺寸 -- 也就是说,谈论比普朗克单位还小的东西是没有意义的)。
 
小得不能再小了吧!可是,即便用这么小的字来写格拉汉姆数,我们人类可以观测到的宇宙都放不下。
 
以后我们吐槽某人膨胀了就别再说“你以为宇宙放不下你了啊”这个老哏了。改“你以为你是格拉汉姆数啊”吧。显得多有文化。
 
是不是这让你脑仁疼了?快喝罐六个核桃补补。
 
 
这还不算,要是宇宙搁不下这个格拉汉姆数的话,咱们退而求其次,毛估一下它有几位数,然后把这个数写出来(比如,要是有一亿亿亿亿位咱就写10000000000000000000000000000)总成了吧?
 
学过计算复杂度的同学都知道,这个操作直接把空间复杂度从O(log N)降到了O(log (log N))啊。
 
还不成。这个格拉汉姆数的位数写出来咱们的宇宙
 
还,是,放,不,下,啊!
 
啊?我还不信这个邪教了。那我再求其次,写格拉汉姆数的位数的位数可以吧?
 
哎呦不巧,这也不行。
 
还不服?那就是退而求其次的K次方,写格拉汉姆数的位数的位数......的位数(中间省略 K - 3 个“的位数”)呢?
 
要是 K 足够大,结果总写得出来了吧?
 
数学家发现,就算 K 比可观测到的宇宙中的普朗克单位体积数还要多(也就是说K本身就写不出),这个K次“的位数”操作的结果还是搁不下啊啊啊啊。。。
 
所以我劝你还是省省吧。
 
扯远了。
 
这个格拉汉姆数虽然大到匪夷所思,还是有办法把它的最后一万位数算出来的。
 
今年7月6日格拉汉姆老师去世,我歌有人才在第二天就写出了这个程序,然后给所有有 CL 号在这一万位数中出现过的同学发了奖。)
 
~~~~
 
奖章制度真的是一个很聪明的主意。
 
奖章不要钱,不发白不发。得了的人还会觉得有面子,打了鸡血。
 
有时候在公司组织一些活动,需要志愿者。没钱发给大家,就许诺给他们一个奖章,可以拿去嘚瑟。
 
你别说还真管用。不花一个子儿让人心甘情愿白干也是可以的啊。
 
当初我为了推广 C++ 测试系统,也利用了这个人性的弱点。
 
我设计了一个鸡毛客(gmock)的奖章,每个星期找出谁谁谁又是我的新用户,然后送上一枚小惊喜。
 
吃人嘴软,得了好处的用户用得更欢快了。有的还给我发来了详细的反馈供我改进,可以说是一本万利,共存共荣。
 
但不是所有人都是奖章收集狂。也有像乔布斯老爷那样的极简主义者,信奉的是断离舍。
 
我就收到过这样的同学给我的来信,说你丫给我的这是啥玩意儿?快给我拿掉。以后也别再给我,烦。谢了!
 
不过有这样执念的只是极少数。
 
如果有一天,我离开公司,最让我想念的将不是公司厨房的小吃、健身房的器材、24 小时热水的澡堂,而是那面挂满奖章的夸夸墙。
 
那是我的青春纪念。



推荐 3