2016年终总结

2016-12-31

许多年后,坐在电影院里,我会回想起跟同事讨论《魔兽世界》拍电影的那个遥远的下午。记得当时开玩笑说,不知道要等到猴年马月才能上映。结果猴年马月还真的到了,不得不感慨时间过得是太快,一切恍如昨日。

今年发生的事情太多。年初换了一家公司,也不算年初,四月份吧。有时候会想,若是刚毕业的时候能进这样一家公司,该是多么的幸运。如果是在那个对一切都还充满好奇的年代,在合适的环境下成长,速度是怎样的惊人。其实可以用公式估算出来的:天份、付出、环境。对于天份我很有自信,而且一直也算很努力了。可惜来得已太晚,红颜弹指老,刹那芳华。

四月到七月间,经历了两个月多的远程工作。远程工作并不像想象中那样美好,所有事情被我搞的一团糟。工作变成了全部,每天大概只有吃饭过或去超市才会说几句话,然而工作却做的不怎么好,更加拼命去做,继续挤压生活。工作的任务,交流和沟通,生活节奏,压力控制,一切都一团糟。试想本以为自己来到天堂,宽松的工作氛围,远程工作这么高逼格,做最有技术含量的事情,并且代码还是开源的,用自己的双手改变世界,这不是曾经梦寐以求的么?结果发现自己没把事情做好。接着就迷茫了,甚至怀疑自己是否真的适合做程序员。这是一个从本质上的否定,非常可怕。被fire掉倒没什么,大不了换家公司,然而"不适合做程序员"这种自我否定,就严重了。一旦信念动摇了,曾经所有的骄傲、荣誉,所有的自尊乃至存在,全都只在一瞬间被摧毁。脆弱的,无法面对...

接着老妈自作主张就买房了,处于事业低迷乃至人生迷茫期,一下子措手不及,买房本来不应太冒失,投资也不是这样子干的。换作是以前,工作不爽可以换一家,或者干脆不想工作了,抽几个月出来思考下人生,也不是没干过。但是现在不一样了,还背着房贷呢。另一方面,这次跟从前不一样,从前知道自己想写代码,想有更好的技术成长。然而这次,成为更优秀的程序员的平台就摆在这里,却开始怀疑自己可能不适合做程序员。

后来就来北京了。从哪里跌倒从哪里爬起来,从哪里失去的从哪里找回,结束了远程,base到北京,换一个环境,开始全新的生活。我想,命运真是爱开玩笑呢,在北上广都待过了,本以为寓言的下一站应该是深圳,结果绕了一圈,却回到了原点。早知道这样,当初就不要离开这个讨厌的城市了。换城市跟换工作不一样,在一个城市待久些,都是熟悉的人,熟悉的事,城市的气味和环境里都会有感觉。我倒是工作没换,城市却换了。

来这边之后,新的生活,平平淡淡。更加孤独,也更加适应孤独了,或者是麻木吧。

比较有意思的,是去乌兰布统草原。头一次见识到了辽阔的草原,对北方的印象也有了改变。本以为北方是贫瘠的荒原,冰天雪地。原来这边也有肥沃的土地,有马和牛羊,天空可以很蓝很蓝,草和云朵出现在同一幅画卷里。

还有十一去骑行。一直就计划着远途的骑行,本来去年春节想骑行海南的,准备不够充分未能如愿。后来想,如果换工作的话,找下家前可以休息一阵,完成骑行。结果入职的仓促,又未抽出时间。一直拖到十一假期,总算是了了一桩心愿,不过已经到了北京,海南就太远了,选了周边的百里画廊。骑行的意义是什么呢?说不清楚,也许是寻找意义吧。人生就是一些经历,一场体验。

体验不一样的远程工作;体验梦幻般的在几个陌生的城市穿梭;体验买错火车票坐一整夜的囧态;体验生病时独自一人半夜去医院的凄凉;或者更简单地,尝到一杯好咖啡的开心,读完一本好书的感悟,都算。

说到书,论文和专业方面可能稍多一点,其它今年读得就太少了。《小王子》却是不得不推荐的一本。迷茫的时候,给了我不少启发。差点忘记了,住在自己内心的那个小王子。可是,又有多少大人懂呢?"如果不去遍历世界,我们就不知道什么是我们精神和情感的寄托,但我们一旦遍历了世界,却发现我们再也无法回到那美好的地方去了。当我们开始寻求,我们就已经失去,而我们不开始寻求,我们根本无法知道自己身边的一切是如此可贵"。

技术方面,得失就不好评判了。总体来说,成长环境在毕业后算是最好的,但是个人在具体的领域专注的还不够。之前远程的时候在底层做kv的团队,来北京之后调到了做上层SQL团队,人手忙的时候还抽过去帮忙弄周边工具。因此机缘巧合,算是在公司各个团队"轮岗"了一圈。也正是如此,从底层raft实现,MVCC,分布式事务,到上层的SQL解析,查询优化,ddl,乃至我们没有开源的分布式binlog(这个有空倒可以写篇博客),都有所涉及。回想起来,比较关键的就是好好读几篇论文。F1和spanner整个架构和设计相关的,事务模型要读几篇,虽然我们用了Percolator是中心化时序的方案,TrueTime以及混合逻辑时钟也是要了解的,一致性这块raft论文肯定要好好读,然后动态schema变更那篇也比较重要的。正如之前说的,今年读的"书"就少些,论文可能多一点。SQL优化的就是一个领域了,不是仅仅一篇论文足够的,还没有太涉足,正如编译器,分布式系统,PL都是各自的领域。一个问题是懂的太"多"了,精力有点分散。

一直想设计自己的语言,无意义地浪费了大量时间。今年发现ocaml之后,又研究了一阵子,接着发现了类型和一些好玩的feature,比如partial apply。于是觉得在我的语言里,都应该实现,便花了不少时间啃zinc虚拟机的论文,本来已经实现出来了,后面又设计加了不少东西,结果到最后还是全都砍掉了。之前想的太过简单了。很多东西考虑得不够清楚,像模块的设计之类。设计一门能用的语言,其实关键还是在于跟外部交互的机制,编程语言对效率的提升不在于是否是函数式,或者表达能力是否强大,提升效率的核心还是在库的丰富性。我发现过很多好玩的语言,比如shen语言的理念我是非常欣赏的:一个非常小的lisp的核,或者说一个扩展的lambda演算作为核心,在它之上提供了更友好的语法比较patten match,保留了sexp代码即数据,类型系统是外挂上去的,并且它的类型系统非常强大,并不是定死的规则,整个语言融合得非常优雅。美中不足的,语言能实用的关键还是库的丰富,跟外界的交互。于是我把目光放到了F#,F#可以调用到.NET平台,在这一点上就非常赞了,F#是门不错的语言,然而发现一门语言,跟自己设计一门语言,两者的乐趣是完全不可相提并论的。最终似乎没有什么是完美的,只能妥协,妥协了就再也不想折腾lisp相关的东西了。

这一年没有制定过计划,没有目标,谈不上完成或者失败。也许还活在去年的阴影里,把没做完的事情做一做,几乎是被外部事件推着走的。如果说特别大的问题,大概是抑郁比较严重了吧。快乐的反面并不是不快乐,而是失去活力,没有抑郁的人可能很难理解。我打个比方,如果有人问“你开心么?”,我会说不开心。但如果有人问,“那你痛苦什么”,我会说我没有呀。是不是很奇怪?是的,既没有开心,也没有不开心,而且几乎没什么事情能让我觉得开心或者不开心,这才是可怕的----我大概知道自己抑郁得越发严重了,失去了喜、怒、哀、乐这些情感,也是失去对生命的活力。

当然,2016年已经过去了,我已经受够了这种状态。30岁之前,总该要搞点什么事情,不管是planA,还是planB。

年终总结