一个三本程序员的逆袭
大概是十年前吧,在我念中学的时候,我外公酗酒过世,在梦里被呕吐物噎死。我妈回村子里处理遗产,当时是暑假,我和她一起。我原本以为继承会是一件很好打理的事,但遗产也包括债务。农村里有种种光怪陆离的借贷关系和名目,一次借钱,还钱的过程可能会分很多批次,之间的人情往来和利息交缠不清,还款周期甚至会涉及几代人。我外公意外而死,又没有留下账本。我妈为了理清那些事,在那里耗费了半个月的时间。后来我还跟别人说,我初中就见识过了三角债,深谙这台中国经济的发动机。除了这些,也听说了很多不可思议的事。
一、有人不事生产,但能靠集资在苏州市区买房,08年后身家暴涨,但无力还钱又绝不卖房;有人勤恳一生,最后仅仅因为借条保存不善又记不清数额,一生积攒化为乌有,被全家人怨恨孤立;还有一户人,包括我外公的借款在内,一共借到了三十余万,统统投资在了孩子的教育上。“你知道吗,他买一本习题,就要五千!”对方露出你能否想象他儿子的学问已经做到多么精深地步的神气表情。“他有满满一整间屋子的学习资料,进去了根本迈不开脚。”当时我抱着最后的一点善意问,教材这么贵,是出国留学了吗,他说不是。我气笑了,问这么有出息的哥哥在哪里念书呀,我以后也想去。他说了个省内连一所一本都没有的地方。当时我还不知道社会上有很多叫“教育培训”的东西,但这件事让我印象深刻。等我上大学了,我对中国教育的最后一丁点儿幻想都没了(当然,它确实很便宜)。大一是我对自己学校最幻灭的时候,有一门课叫暑期实践调查,我做的社会课题就是“教育到底是帮助了底层人民还是拿虚假的希望毒害了他们”,讲了这个案例,调查了农村人对教育普遍存在的理解偏差,尝试统计了那个村子的年轻人里“有出息”/成为老赖和农村语境下“受教育”之间的相关性和因果性,假设相同资质的人依赖教育逆天改命或及时正视现实,他们的人生会如何发展——就差把“东亚特色奶头乐”写在结论里。在一堆扶贫和支教的优秀项目里,我拿了及格,被评价为“有一点点自己的小思考”。不过据我所知,这门课从建校以来还从来没有挂过人。
二、我这一回想写的人,和上面这些事并无关联。而我现在的看法,和初中大一比起来,也有了很大的改变。(比方说,与接受教育比起来,正视事实的门槛其实要不可思议地高。因为天资不低的限制,这一点我在过去并不能明白。)十年后我在北京,在学院路,在一家创立四年的硬件公司里做产品经理。我离那个果戈里式的村子已经很远了,大一时的暑期实践是我最后一次去那里。在这里没人知道我那个难听的小名,大家叫我Ian。物业保洁或者供应商的人,他们会叫我李经理。我组里的程序员,他们叫我Ian总。带头叫得最厉害的那个,就是Tomas。Tomas是组里iOS客户端的开发,是91年出生的,比我大三岁,他在一所三本念计算机科学与技术,毕业后又去了培训班,跌跌撞撞入了行。他最大的成就是他培训班时期的小弟去了上海,在哔哩哔哩从程序员一直做到了“独当一面的大佬”。作为反面案例,他一共面试过三次快手(当时快手还在清华),都失败了,算法题从来都没有现场做出来过。之后他来了我们公司。(看出来了吧,我们公司并不面试算法。)他刚来的第一个月没做什么事,非常焦虑,某天午休的时候找到我,问我公司的工资组成,他怎么算都不对。我给他发了一个税后工资计算器,然后解释:这家公司按税前工资交五险,但按北京市的最低工资交一金。然后我看到了他的手机银行:除了数据不错的工资入账以外,还有100万的商业贷款。我吃了一惊,说你他妈年纪轻轻怎么欠了这么多钱。他说他在老家房价最高的时候回去买了房。我露出幸灾乐祸的表情,他又说自己那套房子跌了三成不止,现在市价只值九十来万,这下我实在是憋不住了,开始捂着肚皮笑。他有点受挫,就来看我的电脑屏幕,发现我在刷LeetCode。“你会编程啊?”他说,“你既然懂技术,那你为什么要做产品经理啊?”我说我用来上班划水的,只做入门和中等难度的题。“你学过编程吗?”我说高中的时候学校选了我们去参加信息学奥赛,我们那种小地方的老师只会教Pascal,我们就用Pascal刷题和参赛,学了一个多月,后来就考到了一个安慰奖;之后大学的专业是电子工程,学了够考试的C,另外找工作前学过一点儿JAVA的语法和Linux跟数据库之类,就只会这么多。只会一点语法来做题,从来没做过工程。(不过我完全清楚咱们这种教育体制里科班出身的程序员是怎么个科班法。)“那你为什么不去当程序员呢?”我说我不喜欢被蠢笨经理指挥着浪费自己的时间,我有很深的死亡焦虑,没办法在无价值的东西上面浪费生命。“那你刷题干什么?”我说最近很无聊,没什么复杂的东西可以保持长时间的思考,担心脑子生锈,所以在自学围棋和刷算法题。我本来打算像小时候那样做奥数玩的,发现难的实在太难了,其余的又太简单,不适合划水。我觉得LeetCode正好,因为上班的时候又不方便打谱。他想了一会儿:“我还是不明白你为什么不去做技术。”我说:“我也不明白你们抱着个手艺就以为自己有了铁饭碗是怎么回事。我爸在九十年代是一个月能赚五六千的司机,是当时公务员的二十倍,一年能盖两套房,后来时代一变,抱着他出类拔萃的驾驶技术混得跟鬼一样。”
我经常在知乎上嘴嗨,但还是第一次跟公司里的人把话说得这么开。这也是我第一次看见他露出那样的表情。我小时候去外公家,曾经偷偷把羊放出来,不忍心这么无辜的动物被杀了吃肉。但那只羊没有跑,不管我怎么推它,它也没有跑。它当时站在草墩前,就露出那样的表情。
后来我们就成了朋友。噢,不是和羊,我是说Tomas。那只羊被炖了,我后来喝了半个月的羊汤。
后来公司践行不知道从哪里的公众号里学来的战略(知识星球也说不定),开始分权。好像一夜间公司总监的数量翻了一倍,能当总监的唯一指标貌似是年纪够大、表演型人格还有大公司的工作史(十年前呆过也可以)。在公司的四周年活动上,CEO登台表示我们从来不跟风,我们只做必须要做的事。原谅我没法不笑,好像公司发展不好是因为总监不够多一样。从那之后,Tomas跟我就不再算是一个部门了,我也不算是他的经理。他由一个从银行跳槽过来的、不知道小程序是用什么写、但充满自信、相信凡事都用数据库知识来解决的八零后项目经理负责。所有会写代码的人都由一个新来的总监来管。据说是BAT出身,还带了他手底下差不多十个人的开发团队。Tomas在里面就像条凄风苦雨里的野狗。另一件有意思的事是第四号创始人忽然变得非常嚣张,插手公司里的所有项目,但其他人对此都保持不合常理的忍让。一时间,公司里来得比较晚的人都把他当成了公司的二把手。(中国人奇怪的政治知识,由一个人100%控股的公司怎么会有二把手。)(当然,基于这点,那些联合创始人为什么是创始人我也一直没懂。)(再来一遍,原谅我没法不笑。)四大人想了很多糟糕无比的点子,总有其他的产品经理担任他的人肉科大讯飞,弄出一些天方夜谭的文档交给Tomas,排期往往险恶至极。Tomas不是总监的嫡系,新来的开发团队抱团得厉害,他那个经理也基本没有维护过他。他独自一人面对着趋炎附势的半壁江山,一直在服软。有一天我吃完早餐,见到Tomas正捧着一个iPad Pro在调试软件,表情奄奄一息,才知道他在公司里写了一晚上的代码。当时我还有权限,我能看到软件总监带来的嫡系们一周都写不到八小时。说真的,我没法理解这群中年危机的老打工崽为了让自己感觉到一点力量感,为什么要草菅人命到这个份儿上。当然,我也发现这是争权。我非常恼怒且羞耻,公司里原来的这些人怎么可以这么不能打。而我居然一直与这样的人为伍。然后我开始跨过他们找Tomas干活。
三、当时正好有一个机会,其实是个很小的工具,没有增加什么成本。抓对需求以后,周末我陪他加了三天班,然后一个场景里很重要的参数上涨了140%。后来Tomas就成了那个工具的长期维护者,也开始规律性地参加会议露脸,因为是几个创始人支持的长期项目(大概也是为了联合对抗那边嚣张的半壁江山),所以他不至于再受到原本那样的欺负。不过他的工作报告比嫡系们好看(毕竟他没有天天吹水,然后自称每天回家以后再写代码)。后来有一天,我们都在食堂吃饭的时候,他们的软件总监忽然拿出一套试卷来,让所有的程序员一起手写冒泡排序。我当时在旁边叼着鸡腿,心想我来这家公司真的不亏,什么场面都见识过了。Tomas没有写出来。这下领导评价那一栏拉低总分就有了依据。我从来不掩饰自己看不起行业里的乱象或者生存方式很猥琐的同事。但是说真的,这个猥琐程度还是惊到我了,根本来不及看不起,毕竟他们那些人全都写对了。“你不觉得这他妈太欺负人了吗?”我说。“没办法,也怪我自己技术太差,搞不定算法。”“你们一群前端,他凭什么只拿算法当标准。你们干的活呢。”我说。“可我要是技术好也不会这样。”“32的平方是多少?”“???”“你看你算不出。”我说,“可是16的平方是256很好算,所以32的平方是1024。刚刚还在聊天,大脑一下子从口语的模式切换到用平面视觉想象来心算的模式,开车还得换挡,谁能一下子答上来?可要是提前知道题目,演个聪明人又有什么难?”“其实16的平方是256我也一下子算不出……”“这是关键吗?”我说,“关键我可以随便问,可以提前准备,我甚至不用知道答案。我可以让你下五子棋,让你玩华容道,让你背千字文,然后说你智商不行。你还真把这群在中国当领导的人那点儿骗小孩的玩意儿当回事?”“你怎么想出来这些的?”“我十三四岁就知道了。”我说。假如你见过满村子争着来当你长辈的灵长类动物,还有他们绞尽脑汁逃避还债的样子。“Ian,真的,你以后是做领导的人。我看得出来。”他对我说,“我不是,我能有今天这样已经很好了。”我想起他的一百万贷款,我忽然意识到,Tomas平时几乎是把“我是三本”和“我背着房贷”挂在脸上,所以他才会受到那种欺负。一个人受到侮辱的原因,是因为他能忍受得了那种侮辱。就像我在某个瞬间里忽然意识到别人没法面对凄楚的现实,但我的生命里很少有凄楚一样。我当时才忽然明白,很多老油条之所以会变成如今的德性,选择猥琐,因为他们正是走向了反面的Tomas。我感觉到自己知道了一些自己不太想知道的事,以至于我一时间不太愿意再看见他那张微圆的、总有点委屈的脸。
虽然他此刻还是无辜的。
我不太愿意这么讲起这件事,所以尽量说短一点吧。在我的复盘里,大概有这么几个原因。因为公司里的老人普遍都太软了,所以反衬了我;因为Tomas的示范效应,所以有人愿意相信我有能力扭转一些东西;一部分人认为我愿意讲理,看起来不像个疯子;而另一些人认为我底蕴少而野心大,年纪轻,目中无人,也许能当枪使。总之,我获得了一些没意料到的东西,也许还有点儿威信。有人在背后说我:投机取巧,善于钻营,言过其实,身无所长,以卑谋尊。也有人认为我巧取豪夺了他们的劳动果实。当然,这些是我听来以后又转述的,肯定不那么准确,因为我百分百相信我是全公司里唯一知道“卑不谋尊”后半句是什么的人。(诶,你总得允许我发泄一下吧。)
我当然知道,很多人喜欢拿着各种各样的消息来揣测种种现象背后的真相,希望找到捷径,可以改善自己的处境。但假如你告诉他们:没有这种捷径,至少没有你想得这么简单的这一种,他们是不愿意相信的。因为这其实很残忍。但真相是,我觉得哪怕是一个三本的培训班程序员,他也不该活成那个种了一辈子地、最后因为借条烂了而要不回钱,于是晚上一个人爬进河里把自己淹死的老人;或者,见到这样的下场以后,被逼成另一个相信弱肉强食善人该死、相信人不为己天诛地灭的穷疯了眼的疯子。我没有言过其实,我觉得我已经见到了这样的征兆。我觉得他应该有这以外的第三条路,任何人都值得有被吃和吃人以外的第三条路。真的,就这么简单。当然,我没有办法解释我自己,毕竟我得到了好处。虽然我根本不知道那么做会得到好处,但这件事捅不到明面来,而且他们反正也不会信。这样想的人里面其实还有挺不错的人,漂亮女孩,我还挺喜欢她的。他们大概不知道我会有那么多朋友,有各种方法听到那些话。他们是真心的。
四、那段时间我下围棋都没什么心情了,就跟Tomas借了支公司闲置的Apple笔,天天在我的iPad的OneNote里练书法: 知其白,守其黑,为天下式 知其荣,守其辱,为天下谷 生而不有,为而不恃,功遂身退,天之道也Tomas看见我一笔一笔写这些东西:“说真的,我最羡慕你这个人的地方就是你这种拔群的装X技巧。”我说:“你不应该羡慕我会做算法面试题吗?”Tomas说:“你又不来做技术。”我说:“我现场做几道ACM题出来,你们总监能不能把位置让给我?我管得肯定比他好。”Tomas:“真的吗?那是什么?”我叹了口气,继续拿着平板电脑练书法:“说起来你有可能不信,但我从小到大已经被人利用习惯了。”“你又要说什么负能量语录?”“以前有女孩死乞白赖地倒追我,因为我成绩好。我告诉她我从来没用过功,一天都没有,没法帮她,她不相信,然后一边跟我在一起,一边倒追了另一个很勤奋的人。直到她发现我连作业都不怎么做,而那个人真的怎么都考不过上课睡觉写小说的我。后来我就只跟成绩比我差很多很多的人一起玩了……不过其实只是换了个形式而已,都一样。别人不接受我跟他们不一样。他们认为聪明就一定要带点儿什么缺陷才叫聪明。”沉默了一会儿,他跟我说:“你看,我就是想学你这么天衣无缝地装X。”我说:“所以我很习惯跟你交朋友。”“你是说我学习成绩差吗?”“而且脑子不好。”“靠。你把那个苹果的笔还我。”“唉,我活得这么沮丧,你怎么忍心呢?”“你到底怎么沮丧了?”Tomas说,“老板上周还在公司会议里点名提你,说你牛逼,你还给公司的其他所有产品经理上课。”我说:“你有没有读过一句话,叫俗人昭昭我独昏昏,众人皆有以,我独顽且鄙。”“你又装X了。”“我大二的时候,有十来个我们那儿的大一新生都来加我QQ,我和他们每个人说的第一句话都是:以后叫我的名字好了,不用叫我学长。”“牛逼。”他说,“不对,这有什么牛逼的?”我说:“我对这些东西不感兴趣啊。我就想加钱,我最不缺别人来认可我。”其实不止是不感兴趣,我讨厌人和人之间这样的联系。因为没有人承认,他们从来都不会心甘情愿地叫别人学长。
“有钱了以后呢?”“不上班。”
两件事。第一,一直有消息说公司会在美国开一个分部,而四号创始人有可能成为美国部门的负责人。我觉得是他自己放出来的消息。第二,长期自称BAT出身的软件总监,上一家任职的公司是一家很小很小很小的软件外包公司,是普通中层,而且是被赶出来的。这条消息倒是确凿无疑,公司里某个人连他在做外包时的客户的微信都翻出来推给我了。北京真小。像Tomas之前经历的那些事情,一下子什么都说得通了。外包公司从写第一行代码起,他们的核心逻辑就是“一旦出了问题,一定要证明己方没有违反合同”。而现在他们没有合同了。我想毕竟也是个成天吹着估值梦想着上市的公司,还招了这么多从互联网大厂淘汰下来的螺丝钉,居然没有一个人搞得清外包、软件和互联网有什么样的天差地别吗。(话说在前面,虽然我也没觉得互联网就算得上是什么体面行业。毕竟我爸曾经一年内全款了两套房,而我也没觉得他体面。)
整个创始人团队开始很频繁地出差去美国,差不多每个月一次,然后动辄呆上一个多星期,中间常常怎么都联系不上。我们动不动就得昼夜颠倒来配合他们远程会议。我一听就知道不对劲,因为这件事从头到尾透露着诡异,各个环节上没有一件是合理的。无论是公司的外部环境还是他们的个人履历,根本没有做这件事的基础,可那段时间好像公司的绝大多数人都被唬住了。于是整个公司的白天都荒废了下来。我看了一眼,在没什么会议的情况下,这段时间嫡系程序员每周写代码的时间已经不到三个小时了。中间有半个月吧,一共只提交了十七行注释。直到有一天,我发现自己的权限被总监级的人移除了。我发邮件问怎么回事,说打算换一个开发协作平台,中间可能有一些技术上的过渡问题。接下来过渡了两个多月,每一回问起来都有不一样的技术原因。我想这真是“技术上的”把屎糊在别人脸上,太有技术了。哪怕以我见过的外表来讲,这样都不合常理。假如他们不是疯了,我能想到的唯一的合理性就是他们有意要捅出一个很大很大的篓子来,然后我和软件总监各打五十大板。毕竟经理对总监,软件总监可能伤到元气,而我会被直接打残。
创始人们终于停下了高强度赴美。等回来检查,发现任何项目都基本没有进展。CEO专门拉着我上司跟我开了个会,在会上问我:高管们不在国内的时候,我怎么没有发挥起稳定军心的领导作用。我心想,要是你走之前说这句话,或者你在美国的时候多看看邮件,我也不至于连账号都保不住。Tomas他们不敢明着帮,因为考核捏在软件部门手里,那我真的只有一个人,还得跟工资是我四倍的总监外加七八个人正面冲突。而且,开会的时候他们的人无论说什么指鹿为马的鬼话,都有起码六个人围着他赞许点头。我把这些事都发给了上司,公司的二号创始人,但他给我的反应疑点重重。我后来把他们开会时连基本的技术常识都弄错的证据发给了他,他很崩溃,直接去找对方对质,但对方坚持自己只是口误。哪怕我专门问过“A真的是B?真的吗?确定吧?”,对方说“当然了”——而六七个人围着他赞许地点头——这同样也在证据里。然后我发了一堆先前留下来的、记录他们代码提交量的截图。那些截图全都被二号创始人截下来了,没有给CEO过目,CEO那边的锅他也自己背了。在我跟他喝茶的时候,他一直顾左右而言他,我猜他的意思还是想联合这位软件总监一起对抗那位半壁江山。虽然软件总监是二大人招来的,不过我看平时也没少往四大人那边跑。我犹豫了很久,该不该问“他到底凭什么帮你”,可说不出口,总觉得还有哪里不对。只好找了个婉转的方式提醒他这个人以前一直是做外包的,很苦,也许没有你以为他应该有的那个价值和节操。结果,他根本不知道我说“他们是做外包的”潜台词是什么意思。这难道还需要什么行业经验吗,这不是凭直觉就能直接推理出来的事吗,真他妈中国特色社会主义。我确实看不懂这叫什么事,只觉得每天的心情越来越差。
五、我也不是看不起外包(说到底,Tomas跟他们又有什么区别呢:三本出身,英语稀烂,差点因为四级没拿到毕业证,听说我裸考一遍过六级时辩解了半天他们省的高考没有英语听力),但是假如一个人的工作内容主要就是和蠢笨打交道,仅仅为了趋利避害,他就应该变成蠢笨。更何况他们完全不相信共赢,无论做什么都是为了对抗。还是消极对抗。Tomas说他能不能转来跟着我做产品助理,我想了一会儿,事实上我见到的产品经理里也没有太多好东西,而且他从学历上真的不合适。他说那他应该怎么办。我说考公务员,不要浪费你的本科。
空转了接近半年以后,公司的研发群平时已经基本没人说话了。忽然有人发了一个截图一个视频,是一个三年级的小学生拿arduino和树莓派做了什么有图像识别功能的机器人的视频。我看了一下,全是现成的模块拼起来的。我还以为他们看中了什么商机,想切入这个市场割智商税——因为充其量就是个乐高嘛。没想到这个视频炸出了一堆三十五岁人的中年危机。“我得赶紧学个python。”有人这么说。“00后都比我们强了。”另一个人接话。虽然在开玩笑,但我能感觉出来他们是真的危机,毕竟世界在变,而他们在一个高管集体旅游了半年的公司里孟姜女一样地等了半年。“现在不用背唐诗,改用这个来打扮神童了吗?”我说,“真想给孩子学编程的话,LeetCode那样的网站很多啊。”我在抖音上就关注了一个天天教十岁不到的儿子解算法题的程序员,实在比我小时候做来装X用的奥数简单多了。“Ian同学,你为什么会对编程有这样的误解?”那个BAT出身、擅长冒泡排序的软件总监忽然出现,在公司群里对我郑重说道,“我觉得你有空可以找一个培训班先学习一下。”那瞬间我脑子里一片空白。我能怎么说,这太别致了。
“他真的这么菜吗?”我在线下问Tomas,“菜到这个份儿上?”“总监这个人可能不太会说话,你知道的,做软件的人都这样。”Tomas跟我说,“你别往心里去,真的,我相信他个人能力还是可以的。”“能力强到相信青少年编程?”我说,“还是说强到没听说过LeetCode?还是说强到非常信赖培训班?强到在外包行业宦海浮沉?”“但是他是总监啊,你说你有什么办法。”“你说这些人都凭什么当上的总监?”“我不知道,我又不是总监。”“那你还相信他能力可以?干了这么多年的外包?”“但是他是总监呐。人家年薪税后八十万。”他说,“而且外包招你惹你了啊。”
我忽然想起了那个农村的“我儿子买一本习题就要五千——那该多有学问。”说真的,这个联想是我接下来一段时间抑郁症的罪魁祸首。
我叹了口气,扶着额头:“我其实并不在乎公司里有一群人,年薪是我的四倍还什么都不懂。但是他说了这些鬼话,而他是个CTO,所以很多人都会觉得他说得对。而且他能毫无压力地说出这些鬼话,是因为他知道公司这些上了三十五岁的人很多连GitHub都仅限听说,甚至不知道LeetCode,哦不,好吧他看样子也是真的不知道。而且他觉得我就跟其他人一样,所以他撒起谎来一点压力都没有。”“我真的不喜欢被蠢人代表,”我感觉到难以言喻的羞耻,“为什么我们公司的人全部都这么菜。”“我真的受够了站在傻冒堆子里了。”“别人会不停拿其他的傻冒来代表你。”
我注意到Tomas又露出了那种表情。我觉得我有些过分,但那些话已经说出来了。
直到最后Tomas都不知道我为什么要离开。很久以后,我碰到一个当时的同事,听到一些说法。据说Tomas坚持认为,我是被软件总监手底下那几个普通话都说不利索的人排挤走的。没有人相信他。其实很早以前就已经非常明显了,但他不明白。不过不仅是他,就连我在很长一段时间里都不明白。哪怕有各种各样的蛛丝马迹早就已经说明了这一点。当我意识到种种光怪陆离现象的背后到底意味着什么的时候,我才发现他们甚至从来都没有试图遮掩过。一切都发生在我们的眼皮子底下。我们生活在一个名为无知的平静小岛上,被无穷无尽的黑色海洋包围;世界给予我们最大的仁慈,就是以普通人愚昧的心智,不能将看起来毫不相干的线索拼凑成事情的真相。这不仅仅是克苏鲁式的比喻。这是事实。我们本来不该向黑色的海水里扬帆启航。
六、在一些会议的蛛丝马迹里和各个高管偶尔说漏的故事中,我推断出了一件事。这件事我没跟任何人说,因为我并没有证据,而且我也没有打算去验证它。我相信老板和各个创始人一度每个月飞一趟美国,其实是因为有某些在内地严重违反法律的、有巨大风险的特别爱好,在美国境内却是事实合法的。我相信他们之所以格外容忍那个脾气古怪的四号创始人,是因为他是老板的(或许也是他们所有人的)供货商或者中间人。我相信四老师在一件最基本的、伸手就可以拆穿的小事上面都要