财新传媒
位置:博客 > 老万故事会 > 【老万脱口秀】程序员的核心技能

【老万脱口秀】程序员的核心技能

大家好,我是老万。我是一个谷歌公司的程序员。
 
大家知道程序员最核心的技能是什么吗?
 
我告诉你,就一条:取名字。
 
代码写得好不好,最关键的就看你会不会取名字。好的名字一定要能准确表达一个东西的作用。
 
有回我审查代码,一看就来气了:作者给这个文件取名字也忒省事儿了,居然就叫“文件(file.h)”。
 
我不知道这是一个文件吗?
 
然后人家告诉我:老万,这个就是处理文件的系统接口,所以叫 file.h。这个名字是我歌资深院士 Jeff Dean 当年取的。
 
现实生活中,很多程序员都和我一样,恨取名字的机会太少,空有一身本事,英雄无用武之地。
 
这就是为什么我朋友里面生孩子多的都是程序员:终于又可以取名字了啊!
 
找工作的时候投简历,大家都得填自己的名字、电话、个人信息。我觉得应该加上一条:孩子叫什么名字。
 
凡是孩子名字取得不好的,直接刷掉,可以节省一半的面试经费。
为了获得取名字的机会,某些程序员无不用其极。我以前的组有一个小哥,连生三胎,有两胎都是双胞胎。
 
你问我们组是干啥的?噢,我们是做大规模并行处理系统的。
 
程序员在公司干得好了,老板会提拔你做技术领导(tech lead)。我是当上了之后才发现,给这个岗位取名字的人太他妈黑了。
 
我想象的是,当了领导我就给大家派活:你干这个,嗯,你干那个。然后我就在后面拿个鞭子,看谁不好好干活,我就抽他一下。
 
后来我发现,其实就是一群驴在拉车,为了让驴自觉地拉,老板就在里头挑一个拉得比较好的,告诉它你就是领导了。
 
然后这头傻驴就兴高采烈地带着其它驴往前拉。要有别的驴不乐意拉的活儿,他自个儿都拉了,说这叫以身作则,lead by example。
 
Lead by example, my ass!
 
大家小时候有没有跟人打过群架?混战之中,谁要是抄起一块板砖往自己头上一砸,把自己拍得头破血流,那所有人都怕他了。
 
我觉得 tech lead 就是干这个的,上来先抽自己两鞭子,然后其他人都看傻了:兄弟,要不咱们还是好好干吧。
 
要是 tech lead 干好了,老板还会让你当 tech lead manager(技术领导经理),除了管技术,还得管人。
 
你想一想,“技术”和“经理”这两个词儿能放到一起吗?
 
绝大多数程序员都有社交恐惧症,绝大多数经理都有社交牛B症。你想在这两个病人集合中间找到交集,不说不可能吧,那也是个 NP 完全问题。
 
所以说公司的做法就是:你有恐惧症是吧?好吧,那我给你来个脱敏疗法,直接把你当社交牛B症治疗,以毒攻毒。能活下来算你造化。
 
我在中关村当程序员的时候,也有社交恐惧症。物理所旁边有一家小馆子,卖肉饼、家常菜。我总是一个人去那吃饭。
 
有次去,要了一斤肉饼,一份小菜,一碗粥。
 
上完菜我一看:粥里面有一只苍蝇。
 
我就跟服务员说:小姐(那时候服务员还叫小姐),你这软饭里有 bug 啊。她就说:噢对不起,对不起,我给你换一碗。
 
吃完一结账,肉饼 12 块,小菜 5 块,粥有苍蝇不要钱,收我 17 块。
 
我一看,不高兴了,把老板叫过来:老板,你这算法有问题啊!
 
你这是贪心算法(greedy algorithm)啊。
 
这得不到全局最优解的呀!
 
没想到,老板是软件所的退休职工。他说小伙子,你看得用什么算法呀?
 
我说:这个事情啊,你要考虑用户的后续反应,得用阿尔法贝塔剪枝算法。
 
老板说,可是这时间复杂度就大了呀!
 
然后我们就开始讨论各种状态空间搜索算法的优劣,从中午两点讲到下午五点,终于说服了老板,从 17 块里扣掉精神损失费 1 块,凑了个整数,16 块钱成交。
 
我们程序员就是这样,哪怕修理一个 bug 的时间成本远远超过了收益,这个成就感是金钱换不来的呀!
 
后来我离开中关村,进了一家美国软件公司。我一直在思考:我们程序员和公司到底是什么关系?
 
进公司的时候,合同写得一清二楚:任何一方愿意,随时可以解除雇佣关系。我觉得这就象是夫妻:结婚自由,离婚也自由,谁也别赖着谁,挺好。
 
要这么说呢,我们老员工面试新员工,就是大奶在考二奶:你这个小妖精,别看现在对我毕恭毕敬,进来之后谁知道会不会逮着机会就在老娘头上作威作福!
 
二奶也很委屈:唉,都是出来卖的,女人何苦难为女人!
 
说到女人啊,公司推行新文化,要求我们在写面试意见的时候不能把被面试的人叫他(he)或者是她(she),因为不知道这人的性取向。
 
哪怕 TA 胡子一大把,只要 TA 觉得自己是个女的,我们叫“他”就是冒犯。
 
为了保险起见,我们只能叫 TC(the candidate)。
 
有的 TC 进了公司后被发现业绩不达标,人力资源部就会建议,开除之前先把这人放进一个叫 PIP(performance improvement plan)的计划。
 
就是说:知道你们夫妻生活不和谐,但是呢,正式分手之前,还是试图挽救一下,看能不能治好,治不好再拜拜。
 
我明白了,这就是按 TCP IP 协议离婚啊!(注:TCP IP 是互联网通信的基本协议。你能看到老万这个帖子,靠的就是这个协议。)
 
上次我在朋友圈发这个段子,有人当场指出:老万你有 bug。把性取向(sexual orientation)和性别认同(gender identification)这两个概念搞混了啊!
 
我一听:嗯,你这取名字很精准,确实掌握了程序员的核心技能!我这里有个 tech lead 的职位你要不要考虑一下?
 
谢谢大家!



推荐 1