根据自己求学和在职场多年的经验,以及我的计算机科学基础班毕业同学的情况,我发现存在这样一个严重的问题:有真才实学的人都太谦虚了,他们总是看到自己的不足,努力上进,却总是输给那些没有真实能力,但会演戏,懂话术的人。
另外我还发现,一旦理解了我的课程内容,就很难在工作中和其他地方找到可以深入交流的人了,因为其他人都没有如此透彻的理解。
基于这些原因,我决定成立一个校友会,方便毕业的同学进行交流。
这个世界上,我们的身边,都充满了“演员”,他们的人生全靠演技。不仅中国社会如此,全世界都是类似的。认识不到这一点的人,终其一生也不能得到应有的回报。
有真才实学的人总是简单地以为,靠自己在技术上的努力就会有好的结果,然而真实的世界情况却并非如此。我们从小被教育要“谦虚”,不要张扬,不要夸耀自己。这使得我们总是在气势上处于劣势,被演技好的人压制。
对于从我的计算机科学班毕业的同学,情况可能更是如此。曾经有一个在我的班上学习很优秀,做出一系列让我吃惊的结果,我很看重的一个同学。毕业后跟他聊的时候,却发现他仍然以为自己公司里的高级工程师水平比自己高,自愧不如。我感觉他都有点“Impostor syndrome”(冒名顶替症)了。明明自己能力很强,却总是感觉自己是假的,而别人才有真本事一样。就算我给他打气鼓劲都没有用,他仍然觉得自己不行。
为什么会这样呢?我经常思考这个问题。结合我自己的求学经历,我找到了一些线索:因为我的教学属于天才教育,所以容易导致学生毕业之后,由于不能正确认识对方的水平,以至于不明白自己的地位。
谁能相信自己报了一个班,两个月之内掌握的技术,其实超过了科班出身,在这个领域工作了很多年的高级程序员呢?这是真的,但这很难在短时间内相信。不仅外人难以置信,毕业后的同学都难以相信自己。这种不自信,导致了他们在心理上持续很长时间的卑微感。
为什么我教出来的学生容易出现这种情况,不能正确估计别人的水平,以至于看低自己呢?这可能跟我的课程的特殊设计有关。我的课程是自成一体,直入精髓,不包含业界各种故意复杂化的设计和空洞浮夸的名词。在我的课程学到的是纯粹的精髓,有了这种思路就能做出干净利落,不带冗余的设计。这样的人如果之前对业界没有了解,接触业界的时候,就会感觉一下子坠入五里雾里。他们不明白业界的东西都是经过故意复杂化的,特意要把简单的真相掩盖起来。别人说的专业名词,我怎么都不知道是什么意思?但他们其实只要自己看一下那个东西是怎么回事,就会明白那些吓唬人的名词,其实是能从学过的东西衍生出来,甚至根本就是噱头。
我自己也经历过这一切。当年我在 IU 研究编程语言的时候,使用的就是天才的方法。我经常不看别人的论文,知道问题之后就自己独立研究,结果解决了一系列的难题。然而问题来了,解决了这些问题之后,我再去看别人的论文,仍然发现晦涩不堪,不知道他到底做了什么,处于什么样的水平。问内行专家,总是跟你说他们水平高的很,你这样自己捣鼓一两周时间,怎么可能超过他们?要么你就硬着头皮去读懂他们晦涩不堪的论文,要么你就总觉得他们也许还是比你领先。等我真的去读懂一些论文,才发现原来我那么短时间做出来的,其实是等价或者更好的结果。但天才的问题在于,他们懒得去读这样故作晦涩的论文,觉得不值得花时间,所以他们就一直以为别人比自己厉害。
在这种情况下,就容易怀疑自己。俗话说知己知彼,百战不殆。现在我知道自己的能力很强,却没有正确地认识别人的水平。晦涩难懂的论文,复杂不堪,体积庞大的代码,给我制造出一些巨大的幻影。我始终以为自己虽然很聪明,但也许别人还是更强呢?我怎么证明自己很强?我怎么衡量自己的水平?这就是我曾经遇到的困境,跟我的一些学生遇到的情况一模一样。使用天才学习法或者教学法出来的人,很容易高估对手,因为他们独立思考,所以缺少能用于衡量对方水平的参照体系。因为无法正确认识对方的水平,就可能以为对方水平更高,从而无法正确地对待自己。
不但在大学里做研究如此,进入公司工作也是一样。当年我进入某公司之前的面试,最后跟一个管理者谈,也就是我的 manager 的 manager。他在会议室里往椅子上一躺,俯视看着我,告诉我说他当年在某公司做了什么什么厉害的项目。后来我对他们给的 title 和待遇不大满意,他又找我去聊。我还以为让我去面对面谈也许有什么好事,结果他又是那副高管的架子,对我说:“你知道我们的产品需要很高的可靠性,出一点错就是灾难性的后果。我们的工程师的水平都很高,都是有三十年以上经验,才能做到 Senior 的级别……” 结果他找我去并不是要给我更合适的 title,而是要说教压制我。
我当然不会傻到相信他这些话,但他们在待遇上进行了一些提高,我也想接触他们的产品,看看是怎么回事,所以我最后接受了不合适的 title。进了公司之后,果然,我发现他面试时说的都是假话。什么“产品的高可靠性”,什么“Senior Engineer 要三十年以上的经验”,全是假的。代码里充满了明显的 race condition,低级错误,这还能“高可靠性”?组里的 senior 和 principal engineer 没有一个能和我相比,根本就不是一个级别的。这个管理者之前是否亲自做过什么厉害的项目,也不得而知。这些都是可以随意编造的,无法查证。
总之,几乎每一次我怀着“谦虚请教”的态度进入公司,以为我会遇到一群跟我一样聪明,谦虚,有能力的人,最终都发现不是那么回事。面试时显得很懂的工程师,自称业绩丰富的 manager,几乎无一例外地显出他们的原形,虽然也有少数例外。最后我才意识到,原来我的能力本来是如此之强,几乎每一次都能顺利解决别人折腾很久也不能解决的难题。
就算解决了别人都不能解决的难题,如何切实地得到升职加薪?这又是一个难题,因为管理者都有一套压人的办法,各种话术。就算你做得再好,他也可能跟你说,只不过碰巧让你做了这个事,其实没有你其他人也能做的。不断地画饼,引诱你付出聪明才智,然后又说你其实没做什么大不了的事情。看明白了吗?如果你对这些事情感到困惑,我很理解你。我们应该讨论这些问题。只有技术能力是不够的。
其实我有时会收到毕业同学写来的感谢信,告诉我自己的工作情况,告诉我学到的东西对他的能力产生了巨大的效果。比如,最近我收到这样一条信息:

然而这些感谢信我看了就忘了,没有分享给其他同学。以至于很多其它同学还不知道自己学到的东西的价值,继续处于不能自拔的自卑,继续被业界和职场的各种演戏现象迷惑。
这就是为什么我想成立一个校友会,让毕业的同学们可以交流此类问题。
当然,校友会不只是在心理和职场战术上给同学们以支持,还会包括技术上的讨论。
很多同学从计算机科学基础班毕业后都会遇到一个问题,那就是工作中和社会上,再也难找到可以进行技术交流的人。因为我教的东西都是非常高级的技术,所以毕业之后不大可能在公司里或者普通的技术 meetup 上遇到可以聊这些事情的人。
我自己也试过。公司里当然是很难遇到真明白我在说什么的人。我曾经寄希望于公司之外的学术/技术会议和 meetup 一类的,但也都很让我很失望。
编程语言学术界的顶级会议 POPL 我也参加过,演讲者真是没有一个人是想让人听懂他在说什么的,论文必然是用大页的逻辑符号公式写的“解释器”。让人看得稀里糊涂,就可以不明觉厉,里面有 bug 也不会被发现。如果你演讲之后去问他,能否简要说一下你的 paper 在说什么,倒是可能得到一些真信息。然后你就明白了,这东西原来并没有任何新的地方,这问题其实早就已经解决了,我自己都做出来过。
去年开设基础班第五期的时候,我还把前面两年的 ICFP(国际函数式编程会议)的论文和演讲拿出来看过一些。都差不多,几十年的老饭还在拿出来炒。我早就指出 ML 和 Haskell 语言的 Hindley-Milner 系统存在严重的设计缺陷,终于有人开始指出这个问题。然而他却没有直击 HM 系统的要害,只是打了一些擦边球,顺便又提出了一些自己的“改进新想法”,却没有解决根本问题。所以我期望的“HM 终结者论文”也并没有出现。这么简单的事情,我几句话就说清楚了。学术界折腾了几十年了,居然还不能明白。你说这些学术会议有什么意义?
业界的技术会议我也去过。总的说来和学术会议类似,演讲者的主要目的不是让人听明白,而是让人们知道“我们做了一件很厉害的事情,但我不让你们听懂是怎么做的”。
于是有人就参加一些非正式的 meetup,希望遇到一些聊得来的人。但是很可惜,meetup 也差不多。我在伦敦和东京都参加过一些技术性的 meetup,发现演讲者和参与者水平都非常低。比如在伦敦的时候,我去过一个 Rust 语言的 meetup,遇到一个英国年轻人,煞有介事地在那里跟人说他在写“解释器”,好像自己是大师在做演讲一样。我问他你怎么写解释器的?他说我看一本书叫《Crafting Interpreters》,我就知道他是门外汉了。我跟他说这本书不大好,是骗外行的。我以前就是研究语言,写解释器的,我都用 Scheme 语言写,什么样的解释器都写过。然后我就发现他连 Scheme 语言都不会,所以我又告诉他怎么学 Scheme。知道遇到内行了,他的气势下去了一点。后来我走开跟其他人聊了一会(也是一些毫无价值的谈话),再走到他面前的时候,他好像忘了我是谁,又重复跟我吹嘘他写解释器的事情…… 我就知道我遇到 NPC 了。他不是真想变得很厉害,他只是想靠自己的气势和说辞来让人们觉得他很厉害。
参与者都如此,演讲者就更是如此了。凡是做个演讲,必然要做出一副“大家风范”。雄赳赳气昂昂的样子,还时不时的用手拍拍桌子,好像自己做了多么了不起的事情似的,而其实不过是写了一些小儿科的,还不一定能用的 prototype,比我们基础班的代码难度低很多。开场白总要说说自己的历史,比如我当年是写 Haskell 出身的,意思是“我连 Haskell 都能写,我当然什么别的语言都会!” 看到这幅架势,学识浅的人可能就被忽悠了,觉得他水平真高。所以我才意识到,这种场合大概都和知乎没什么两样,就是现场版的知乎。人们在那里不是为了真正的技术交流,而是为了让其他人不明觉厉,以为自己很厉害,这样他们就能谋求利益了。
所以一旦掌握了我传授的精髓知识,就很难找到可以真正交流的地方,因为其他大部分人都太肤浅了,或者怀着不可告人的目的。
这就是为什么我觉得有必要组织一个“校友会”,目的是给我的学生们提供技术,事业和心理上的支持,达到共同的进步。之前我建立过一个计算机科学基础班的大群,但由于也许并不是每个同学都是有真才实学的人,有些人还是进来混的,也有半途而废的,所以我觉得这个群失去了意义。
现在,我决定重新建立一个更真实的校友会。如果你理解了这篇文章在说什么,希望互相启发,得到帮助,或者为其他同学提供心理或者事业上的支持,可以联系我加入校友会。请告诉我你现在的工作情况和感受,所在的地区等信息。
我会在近期组织一次校友聚会,邀请顺利毕业的同学参加。由于我的学生分布在世界各地,第一次的校友聚会可能还是在 Zoom 上进行会方便一些。如果进行顺利,今后我会在不同地区组织现场的交流活动。由于我现在住在日本东京,如果碰巧有在东京地区的同学,我们也可以临时组织一些小型的聚会。
由于不是每个毕业同学都经常看我的博客和微博,所以欢迎把这篇文章转发给认识的同学。