财新传媒 财新传媒

阅读:0
听报道
01
在浩瀚无垠的银河系里,一颗寂寥的蓝色星球上,西经122°11'47.4"北纬47°40'43.4",一栋不起眼的四层灰色小楼里,有一间不起眼的灰色办公室,里面有几张不起眼的灰色桌子和几台电脑。两个不起眼的电脑工程师在这里相遇了。
 
葛格・罗宾斯(Greg Robbins)是我在谷歌的前同事。12年前我们在同一间办公室工作的时候,公司还租住在柯克兰市邮局对面的办公楼里,房东是IBM。他加入谷歌那一天,我清楚地记得,是10月10号,中华民国的国庆节。
 
我那时在埋头做 C++ 测试框架。项目组在加州,组里只有我一个人在柯克兰,如滞留缅甸的中国远征军孤军奋战。没有组织的温暖,只觉得此恨绵绵无绝期。老罗也是。他是做苹果客户端软件的,项目组其他成员都在总部。他与世隔绝,和他表叔鲁滨孙一样过着漂流记的生活。这样我们两个孤儿就分到了同一间办公室,命运让我们彼此抓紧。有一首歌:你呀啊无家可归,我呀啊有家难回。同是天涯沦落人,苦瓜枯藤紧紧相随。唱的就是我们俩。
 
02
老罗个子不高,眉清目秀,说话轻言细语,常年穿一件长袖圆领衫,看上去就是一个普通的码工,随便往哪个大公司的角落一扔就会不留痕迹消失的样子。然而有一次吃饭的时候,听同事说他很有名,照片上过《纽约时报》。我去谷歌了一下,才知道老罗真的是苹果电脑界的名人,事迹上过《新闻周刊》(Newsweek)和《连线》(Wired)杂志,还有 Slashdot、Reddit、Verge 这样的大网站。事情是这样的(以下描述取材于主人公之一狼哥的自述):
 
1991年,老罗从宾夕法尼亚大学硕士毕业,春风得意,逐梦硅谷,去苹果电脑公司做程序员。然而他没赶上好时候。那时候的苹果虽然大名鼎鼎,但是在可口可乐卖糖水的老板领导下,公司摇摇欲坠,股价低迷不振,随时要被微软从地球上抹掉的样子。老罗他们也是饱一顿饿一顿。果不其然,几年之后的一天,因为项目原因,老罗失业了。
 
和老罗同样丢了饭碗的,还有很多别的员工。这里单表其中一人,名唤狼・阿维刺儿(Ron Avitzur),乃斯坦福大学物理专业毕业的牛人。这位老狼被取消的项目是一个可以画函数图像的计算器软件(Graphing Calculator)。狼哥是个认死理的人,答应了的事就要办到。苹果不是雇了我开发软件吗,那我得干完这活儿。给不给钱是公司的事,项目半途而废那可是有辱狼哥的英名。于是,他找到老罗:想不想干一票大的,咱潜伏回公司把这个项目给做完了?老罗一听:你疯了吧,给几十亿美元的大公司白干?行,算我一个。
 
这时两人发现自己的工卡居然还能用,公司的电脑账号也没有被注销。于是他俩每天还和往常一样,到公司刷卡上班。除了不领 Apple Pay,和周围的人没什么两样。你看苹果也是奇葩,混乱到了什么程度。当然了,那是乔老爷回归苹果之前的事了。今天的苹果,要是没有雇佣合同,就是一只死苍蝇都混不进去,更别说俩活人了。
 
老罗和老狼可以说是明火执仗地干,因为很多苹果工程师都很同情他们,不会去举报。看了他们的产品演示后,前同事们纷纷表示这可是好东西诶,必须要上啊。开发基于Power PC架构的新电脑的工程师们尤其支持他们,因为这是一个展示新电脑能力的好机会。然而,工程师们没有权力把他俩雇回来。于是老罗告诉解雇他的老板:他在公司找到了一个新项目,老板是老狼。老狼呢,有人问起就说老罗是自己的老板。就这样,因为他俩的传递闭包关系,没有经理在中间碍事儿,不用开会,不用汇报,每天就是闭门写码,怎一个爽字了得。
 
按老狼的说法,他的卧室朝东,没有窗帘,每天太阳一出他就醒了,所以到公司总比老罗早十分钟。老罗不知道啊,还以为老狼已经干了几个小时了。于是,他羞愧地干到星星出来才回家。老狼看自己请来帮忙的老罗这么卖力,于心不忍,也只好一起加班。这样,两人劳动竞赛日复一日,项目进度飞快。那时候,老狼和老罗都很年轻,没有房贷,没有娃,生活简单,就靠积蓄月复一月地撑着。直到某天。
 
这一天,苹果公司有内部项目变动。主事的一查记录:老罗老狼的办公室空着。那好吧,把李约翰和王路易搬进去。这一搬,他俩不就露馅儿了吗。马上,被公司保安注销了工卡赶出大门。也是天无绝路之人,那个月苹果又是一大波裁员,20%的人丢了工作,空出了好多办公室。他俩又每天戴着失效的工卡在门口候着,有正式员工进门的时候就尾随进楼,屡试不爽。别人只看到他们有卡,哪想到是过期的。
 
随着项目的进行,知道的人越来越多,一些正式员工自愿加入了他们的工作。半年之后,产品快做完了,真正的考验来了:如何说服公司把软件发布出去?他们给一群经理演示了自己的产品,老大们都惊呆了,发出阵阵“哦~~”和“啊~~”的声音。这么好的产品,哪个组做的?谁是经理?老狼这才揭示了他们在公司非法打工的真相。老大听了,哈哈大笑:这个小鬼还挺幽默的嘛!狼哥:我是认真的。如果是拍电影,此时就该是几个经理笑容渐渐凝固的特写镜头了。
 
那次演示之后,公司终于认识到这个项目的潜力,安排了一大波人员来支持老狼和老罗:有做测试的,有做可用性分析的,有做本地化的。不过,老大们还是不能聘用项目的核心人员狼哥和罗哥,因为这必须得法务部门批准。可要是法务部知道了事情的真相,一定会勃然大怒,把他俩马上赶走,这事儿就黄了。所以,他们还得每天蹲公司大门口,逮机会蹭个班上。终于有一天,和他们一起工作的同事受不了了,想招给他们弄了个橙色工卡,就是负责餐厅做饭的、厕所里通马桶的临时工那种。临时工就临时工,虽然还是没有工资,好歹每天可以挺起胸膛做人了。终于,他们的产品完成了,成为了 Mac OS 9 系统的一部分,出现在两千多万台新苹果电脑上,造福世界各地数不清的老师和学生们。
 
他们后来还想给这个软件做个 Windows 版来着。可惜,微软的保安不是混饭吃的。
 
03
前面说过,老罗开发的是一个绘图计算器。你输入一个函数,这个软件就可以把它的图像画出来。巧的是,我高中的时候也在苹果 II 电脑上做了一个画函数图像的软件。当然,我们有天壤之别。老罗的软件不但可以画曲线还可以画曲面(也就是说二元函数),而且可以处理的函数类型也多得多。和老罗的比,我这只不过是一个概念性的玩具。但这也足以让我感觉亲切了。王小波的哥哥编过一个故事给他听:一位古希腊的哲人去访朋友不得,在一块涂蜡的木板上画了一条优美的曲线留下。朋友回家看到曲线,深为折服,也画了一条曲线做答。我看到老罗软件画出的优美曲面,也是拜服。
 
这个问题的标准做法,应该是扫描用户输入的字符串,按照函数表达式的语法进行分析,找出语法错误,再做类型检查,最后根据表达式的结构,要么解释执行要么直接编译成机器代码执行,做函数计算。只是这一切对上世纪80年代一个中国三线城市没有读过《数据结构》的中学生来说,实在是太难了。我只懂整数、字符串和数组,所以我投机取巧,用一个简单的字符串扫描把用户输入的函数翻译成苹果 Basic 语言的代码,直接插入到程序当中执行。这种方法简单粗暴,也能工作,但是要是用户输入有语法错误就会跑飞,甚至有可能被黑客钻了空子,利用这个漏洞植入恶意代码。这就是 SQL injection 攻击的原理。老罗他们的做法,比我的 hack 高多了。
 
 
04
老罗做完他的计算器软件之后,来到大西雅图,在真网络(Real Networks)公司工作了快七年。这个真网络公司也是赫赫有名,当年网上流媒体播放技术的先锋。罗哥进去的时候是98年,公司股票十几块钱一股。接下来公司像磕了药,股价一骑绝尘,在一年多后竟然狂飙二十倍,到了300多元。老罗对钱没概念啊,期权攥手里没卖。结果马上赶上互联网经济泡沫破裂,股价又一路狂泻回到十几块钱,哎,那只是一场游戏一场梦。刚才我看了一下,这家公司还没有退市,但是只值三块钱一股了,成了彻头彻尾的垃圾。
 
所以,罗哥语重心长地告诫我:公司的股票一到手,别犹豫,马上卖。你看,你的人都已经在公司了,再把大把股票押宝在公司上面,岂不是把全部鸡蛋都放在一个篮子里,一损俱损。还是降低风险要紧啊!我听了半信半疑,最后决定折衷:从股票期权到手之日起,到作废之时止,每季度固定卖掉一部分。要是祖上积德股票狂涨,那我起码还屯了一些;要是股票狂跌,那我起码还出手了一部分止损。做人呢,千万不能太贪心,钱这东西差不多就行了,开心就好。
 
05
我在谷歌开发过一个内部工具 Lica,可以根据员工的属性做各种逻辑运算,找到你要的那个人。比如说,你要找柯克兰办公室一个养狗的士大夫工程师(Staff Engineer),这个人通过了 C++ 可读性测试,但不能是2007年第一季度升职的,那么你输入“everyone-kir & dooglers & level:staff & read:cpp - promo:2007q1”就好了(为什么有这种奇葩需求?也许你在申请升职,需要一个早就是士大夫的人为你背书。而你的项目是 C++ 的,所以他必须要对 C++ 有发言权。你用20%的时间把公司办公室改造得对狗狗更友好,所以希望这个人可以从铲屎官的角度评价你的贡献。)。
 
这个工具推出之后,老罗大为赞赏(那时候这个词的意思还不是给公众号作者发红包),多次反馈,鼓励我添加了不少功能,包括给搜索结果配上大头照。老罗还多次为 Lica 背书,把它推荐给更多的同事,还试图说服公司把 Lica 做成正式产品,未果。
 
做软件的人,最开心的就是做出的东西有很多人用,能解决用户的痛点。Lica 解决了很多同事的痛点:工程师们用它来寻找解决技术问题的最佳人选,招聘部门用它来选择和申请人背景符合的面试官,秘书们用它来决定邀请谁参加会议......那段时间,我的级别低,责任轻,还有时间写这些和项目无关的软件,是一段快乐的时光。我对老罗对我的支持深表感谢。
 
后来,Lica 依赖的两个内部工具下线了,而替代品很难用,我忙起来没有时间打理,这个工具渐渐失修,终于不能用了。前两年,我还不时收到用户来信,询问什么时候能够修好。不幸的是,公司大了,做这样的义务劳动经常是得不偿失的。对不起,我实在是在本职工作之外没有余力了。
 
在谷歌相册上线以前,我司有过一个桌面版的相册管理软件 Picasa,很多人应该还有印象。Picasa 后来出了网络版,可以用来分享照片。但是有个问题:下载别人分享的照片很麻烦,要一张一张地来。我写了一个命令行的小工具 pad (Picasa Album Downloader),可以一次下载一整个相册。老罗觉得不错,给它加了一个 Mac 版的图形界面,让它更好用。 有几年的时间,公司同事用这个工具分享照片,直到后来 Picasa 退休,谷歌相册上线,各种惊艳,也支持批量下载,pad 终于没用了。
 
06
我有收集自己喜爱的歌曲的癖好,从中学开始陆陆续续买了不少磁带,CD。后来这个习惯又拓展到了影视圈儿,开始收集电影。汗牛充栋但没有时间去看。我经常用手婆娑着它们的封皮,想象着它们的精彩内容,然后把它们放回书架又去加班。这一刻,我深深地体会到了一个勤政爱民的皇帝面对后宫佳丽三千无暇宠幸的深切悲哀。
 
老罗不然。他很早就是订阅服务的拥趸。他不买碟,音乐听的是潘多拉人民广播电台,免费;电影看的是网飞(Netflix),每个月十块美金的订阅费。我问他这样会不会有压力,看少了会觉得亏了。老罗回答:并不会,亏不亏不在我的算计之内。
 
老罗的睿智我当时难以接受,然而多年之后,屡次搬家,望着越积越多的影碟,想一想有多少是我真的看了第二遍的,甚至很多一遍都没有看过,这才感觉到哥的智慧。人的认知经常滞后于他们的经验。我们会取笑我们的父辈:一点东西都舍不得扔,家里塞满各种包装盒和淘汰下来的旧电器;冬天还屯大白菜,随时去超市买新鲜的不好吗。但我自己又何尝不是如此,为物质所累。现在我已经逐渐接受了罗哥的观点,亡羊补牢未为晚也。
 
07
罗哥对钱的态度超然,所以才有当年的义务劳动。真网络公司的股票事故也没有让他崩溃。到了谷歌,他是我司 Objective C 语言编程风格指南的领头人,对苹果手机版的谷歌地图和一些开源项目做出了很多贡献。以他的技术水平,拿个士大夫(Staff Engineer) 或者老年士大夫 (Senior Staff Engineer) 职称,只要他想,绝对没有问题。但是老罗对升级一向不热心。他觉得有时间准备升职材料不如写写代码。这么多年,我觉得我司欠他一个职称。
 
一次柯克兰公司大会,大头头在台上给大家传经送宝,讲解如何才能更快升职。罗哥举手,好奇地问:为什么我们要升职,就这样天天写代码不是挺好的嘛?大头听见这样 naive 的问题,真是哭笑不得,只好尬笑解释:升职很酷啊,升完之后会有更多的资源做自己想要做的事情。老罗回答:我现在做的就是我想要做的事情,那看来我不需要升职了,还是把机会留给想升职的同事吧。
 
08
老罗为苹果贡献过青春,但对乔布斯的评价却不是那么高。他主要看气质,啊,人品。他说:乔布斯是一条蛇(Jobs is a snake)。为了利益,老乔什么都做得出来。确实,乔布斯的商业手段无人能及,但是他做事从道德层面上来说,确实有时不甚光彩,连和他一起创业的伙伴沃兹尼克都坑(老沃主导给 Atari 公司开发一个游戏,结果奖金被老乔私吞了。十年后老沃知道这事,失声痛哭。)。虽说人无完人可以理解,我们不能因为乔老爷对人类文明的贡献,就对他的过错视若不见。
 
公司有一位同学以前是在苹果做过实习生的。据她讲,一位同事带狗去上班,在电梯里碰上了乔老爷。因为只有他们两人,不打招呼有点尴尬。于是这位同学决定活跃一下气氛,脑子一抽来了这么一嗓子:“哎哟妈呀!这不是老板吗?老板,这是我家的狗狗,大强。大强你看,这就是我的老板,史蒂夫!”说完了,巴巴地望着乔老爷,看他是啥反应。老乔板着脸,全屏黑线,出电梯的时候狠狠地瞪了他一眼,如同赵家的狗望向狂人的目光。这位同学接下来的几个月,茶不思饭不想,吃嘛嘛不香,就等着另外一只鞋掉下来。虽然没有等来秋后算账,可是他的心理阴影面积,那是用老罗的绘图计算器也算不出来的啊!老乔伟大,但对不起,我是不愿意被他这样人领导的。
 
09
老罗有一位伙伴叫 Jennifer (珍妮芙),长发碧眼,性格温柔。她身材袅娜,行走时如风摆杨柳。有的时候,老罗会把她带到办公室来陪着编程。她也不说话,就在老罗身上蹭来蹭去。老罗不时拍拍她的长发,揉一揉。“Good girl(乖女孩)!”他说。有时候老罗忙起来没工夫搭理她,她觉得没趣了,也会蹿到我这边来,在我的椅子周围转来转去,看我在做什么。对了,她是老罗养的一只单身狗。众所周知,我司是允许员工带狗狗上班的。
 
我因为小时候在农村被狗狗咬过屁股,连打了六个星期狂犬疫苗,留下了心理阴影,看见狗狗就躲。但是珍妮芙不叫不咬人,醒了就望着你,困了就睡,我见犹怜,居然治好了我的狗狗恐惧症。后来我跟老罗不在一个办公室了,很久没有看见珍妮芙。一次跟老罗吃午饭的时候,我问珍妮芙最近怎么样了。老罗的眼里闪过一丝忧伤,小声说她已经不在了。我不知道怎样安慰他。是啊,我们在一起的时候珍妮芙已经10岁,相当于70岁的老人了。狗生苦短,希望珍妮芙在狗天堂里能够找一个帅狗哥哥做伴,幸福美满。
珍妮芙走后,老罗把自己在公司的头像换成了她。今天,他在领英(LinkedIn)社交网络上面的头像还是和珍妮芙在花前的合影。虽然珍妮芙没有像王思聪的狗狗一样戴过四支苹果手表,但她有老罗对她的一往深情,加上在谷歌做程序员鼓励师的经历,也不枉此生了。
 
10
老罗是 Objective C 语言编程的专家。而我对学习各种编程语言很有兴趣,在读博士的时候就选择了这个方向。Objective C 的大名我在读本科的时候就有耳闻。它和 C++ 都是面向对象的,但是更偏动态一些,风格和 C++ 泾渭分明。老罗热爱 Objective C,为了领我入门,给我简明扼要地上了一堂概论课,还推荐了一些文章和书。可惜后来工作和生活对我十面埋伏,让我疲于奔命,越来越忙,像小学数学课上在两人之间不停折返跑的傻狗(对不起了,珍妮芙!),学习编程语言的爱好只能压进堆栈,期待有一天解冻。
 
两年前的春夏之交,突然接到老罗的一封信:“世界这么大......生活不只眼前的苟且。Ade,我的电脑们!Ade,我的同事们和朋友们!”信里接下来是保罗・西蒙《逃学威龙》(Me and Julio Down by the Schoolyard)的一段歌词:
 
And I'm on my way
I don't know where I'm going
But I'm on my way
I'm taking my time, but I don't know where
 
我上路了,
我不知道去哪里。
但是我上路了,
来日方长,但我不知道会是哪里。
 
这首歌讲诉的是两个叛逆少年逃离学校和家庭的故事。依稀中,老罗和老狼幻化成那两个少年。他们追随自己的内心,无视世俗的规则,不为身外之物羁绊,为了理想仗剑天涯快意江湖。
 
老罗走后,我发现自己还没有写过一行 Objective C 的程序,有负他的期望。当年苹果公司快要被挤出市场,Objective C 眼看要挂。没想到随着 iPhone 的风生水起,带动了一大波程序员为苹果生态开发应用。Objective C 作为原生系统开发语言,起死回生。老罗将来去见珍妮芙的时候,也可以含笑九泉了。
 
有朝一日我钱够花了,可以光荣退休的时候,希望还没有得上阿尔茨海默病,还记得老罗和他热爱的 Objective C 语言。那时候,哪怕 Objective C 已经退出了历史舞台,我也要用颤巍巍的双手戴上老花镜,从尘封的 github 上下载它的编译器源文件,让它起死回生,再用它编写一个程序,哪怕我那时的智商只够写“ 你好世界”的。
 
只为故人。

本文首发于微信公众号“老万故事会”。欢迎扫码关注:

话题:



0

推荐

老万故事会

老万故事会

156篇文章 4小时前更新

老万,基层程序员。智商配置一般,主频较低,小内存患者。文化程度介于《知音》和《故事会》之间。偶尔写几个字,发在财新和微信公众号“老万故事会”(laowangushihui)。

文章