回顾2018

@2019-02-13T08:58:28

每次写回顾都是一件很痛苦的事情,因为需要把很多去年的事情回忆整理。事情很多,但是又不可能全部都记录下来, 而且也不愿意敲这么多的字,只能挑特别重要的事情,以及特别有感触的事情来写了。

这年前半年还比较平淡,分界线大约就是在7,8月份的时候。先说说前半年吧,这段时间最值得写的事情有两件, 一个是自己撸了一个推荐系统上线了,效果是非常的好,好到我自己都有点吃惊。另外一件事情就是和老婆去了一趟 西藏,觉得真的是不虚此行。那边的生活方式和景色,和我们这些生活在都市里的人们有很强的距离感,让我们 在不知不觉中就开始忘记很多烦心事,开始放空自己。大约就是7,8月份的时候,我突然对现在的工作有点倦怠了。

不是因为在这里没有挑战了,而是出于某种逃避的心理,想重新回大公司去做螺丝钉。当时花了很长的时间准备简历, 但是却没有花费很多时间在刷题上,导致前面几轮面试都非常惨。我记得应该面试了amazon, airbnb, hulu这些外企, amazon两轮面试下来觉得我设计能力不行,airbnb同样两轮面试下来觉得我算法水平不行,hulu电话面试就把我pass了。 我研究生毕业就直接进了百度工作,是没有经历过这种外企面试的,所以对他们的面试套路不太熟悉。加上这几年的 工作经历,想当然地认为这些公司都比较容易进去,所以也都没有好好准备。另外我觉得我当时的target其实是google, 这些外企都是拿来刷经验用的,所以也没有太用心,不过最后没有拿到offer也稍微有点灰心。

我记得当我被airbnb的算法面试题虐惨之后,我一段怀疑自己适不适合当程序员。我觉得这里面的工程师算法水平这个高, 说明这些人的基础能力是非常不错的。这些人只要运气不要太差,把我这类程序员刷掉是分分钟的事情。相比他们我觉得 自己就是业余的程序员。我记得这个问题和能辉还有刘瑜都讨论过,但是他们并不这么觉得。算法水平只是软件开发中 的一个技能,在很多时候的确起着大用途,但是在大部分时候却并不太需要。软件开发还需要团队协作,还需要良好的 设计,需要丰富的领域经验,需要对外部需求保持敏感,除此之外个人情商也是非常重要的因素。我现在已经走出了这个 怀疑了,程序员和其他工人一样,都有自己擅长的领域,只要能在自己的方向上做好做深,那就是有价值的。 不用一味地拿自己的短处和别人长处比,扬长避短,而不是补短避长。同时自己的情商也是非常重要的,包括个人选择, 抗压能力,皮实程度,是否愿意延迟满足,等等等,这些在很大程度上有影响着自己是否有比较好的未来。

self-doubt-of-career.png

除了面试这些外企之外,我还面试了alibaba和头条。我的明显感觉就是,国内公司更像是国外的大学,属于那种 宽进严出的类型。国内公司面试主要是看你基础是否达标,不会出太困难的面试题目来challenge,然后你能过来干活就好。 然后在内部通过各种机制把这些不太适合的人给筛除掉。而国外的公司面试则是层层筛选,挑选最优的哪一类, 但是进去之后做的事情如果不在headquarters的话那么基本是无关痛痒,不会造成太大的impact,当然面对真实挑战 的机会也会少很多,比较适合养老的那种类型,仔细想想这类外企公司好像也的确不太适合我。我还面试了Pony.AI, 这是一家特别的国内公司,有国外企业尊重技术的氛围,但是也有国内企业生猛的干劲。

因为面试的target就是google, 所以这里有必要写一下。google面试的一个好处就是给予面试者比较充分的时间来准备, 我记得从内推成功之后接到phone screen,recruiter在电话里面和我简单地确认了一些我会编程之后,就开始预约电话 面试的时间。当时为了做好充分的准备,我记得是往后推了1个月,然后电话面试之后到现场面试也推了1个月。也就是说 有2个月的时间来做准备,包括刷题和系统设计。初次面试google还是蛮紧张的,我记得电话面试是安排在周一,周日那天 我带孩子去附近的迪卡侬玩,但是我的心却完全没有在那里,满脑子都是面试的紧张。不过到了真正面试的时候, 深呼吸几下,进入到题目中间去,那种紧张很快就消失了。google现在的面试题目并不是很难(知识点我记得就是trie和二分排序), 但是在写程序的时候一定要小心谨慎,边界情况都要考虑清楚。


就在面试google的同时,我觉得我的心态也发生了细微的变化,尤其是面试完了alibaba之后。因为面试完了alibaba之后, 我开始意识到,自己的能力在大公司并不能够被得到认可(从薪酬方面就知道了),而且自己在大公司也根本混不开。 之所以现在还想去大公司,可能单纯地因为在小公司的时间有点长,而没有完全是出于理性的考虑。如果单纯地因为在 小公司时间有点长而想去大公司,期望在大公司里面可以大展拳脚,不得不说这种想法真的很naive, 而当时的我的确就是 这么的naive.

另外我还意识到,自己想去大公司的原因,是希望做一些big project,希望在这些big projects里面得到充分的锻炼。 然而细想一下事情肯定不是这样的。big project肯定可以受益颇多,并且可以获得fame,但是做的事情确实非常琐碎的。 这件事情完成之后,自己所做的可能也只是某一个模块,只是对这个模块的设计和实现会比较清楚。没错期间可能会遇到过 很多挑战,但是这些挑战和解决挑战和自己并不太相关,自己可能根本就看不到或者是没有办法体会到,除非自己是这个 项目的负责人,拥有足够多的context. 或许完整地完成一个big project根本就是不现实的事情,从小事情做起, 尽可能地做的完美,不断地解决各种小问题积累经验,或许这才是成长最笨但是同时也是最快的办法。

此外过分希望通过公司项目来成长,这种态度有点过于消极,而且运气成分极大。首先公司好的项目你可能根本就无法参与到, 即便能够参与到好的项目之中,如果自己的能力在整个team里面不是特别outstanding的话,那么做的也只能是打杂的活。

之后我还和单位其他同事聊过这些事情,我觉得《激战》里面的话应该特别能概括我当时的情况,那就是“逃,就会输一辈子”。 如果遇到一些不顺心,遇到一些挫折就想着逃避的话,那么永远都只是loser. 只有在setback下面奋力反抗,不断地强化 自己的意志,事情我可以做的很慢,但是每天都在不断地推动,才有可能成为winner. 工作是这样,生活也是这样。