我把我的职业生涯回忆文章定名为《在路上》,是因为最近我有些感悟,开始不那么彷徨:人生是一段旅程,大多理想也许无法达到,但无所谓,只要还在路上,我们就可以继续追寻,这种努力的追寻有时候比结果更重要,有时候能产生比你想要的结果更好的结果。

其实我不并像很多人以为的那么乐观,我对我们的国家,我们的社会,我们的个人发展,总体的看法一直都是很悲观的,以至于这些认识讲出来都可能会违反我国法律。但是,最近在大问题上,我越来越不彷徨,我可以不管自己的内心多么悲观,多么苦闷,都积极的去面对这个世界,作出自己的努力。有些人对此有巨大作用,堪比照亮我漫漫前路的明灯,他们是刘涛,李志文,叶劲峰,周筠,刘江,李笑来,我会一一撰文介绍一下他们。

一、直爽,勤奋,执着的刘涛

twitter id:@liut
blog:http://liut.cc/blog/

刘涛是我的一个老朋友。最早知道他是很久以前了,那次我跟火炬讨论一个非常复杂的MySql问题,我们都束手无策。他跟我说要是刘涛在就好了,他说刘涛钻研一个东西就会钻研的很深,刘涛可以解决他遇到的所有的MySql的问题。说这句话的时候,刘涛还只是一个网管,兼MySql DBA。

过了几年,刘涛在一个公司做程序员。Donew5周年聚会,我、火炬和刘涛都应约参加。那次就是周鸿祎的第一次提出“谁的屁股都不干净,出来混都是要还的”,那时候,我和刘涛都坐在会场的一角。

刘涛问我,tiny,这个人这么无耻,你觉得应该不应该骂?

我说应该。

他立刻站起来,大喊了一句“周鸿祎,你给我滚下来”

全场皆惊,一片混乱,周鸿祎的回应大概是说,骂我的有本事上来说之类。

我就被刘涛吓了一跳,虽然之前火炬也跟我讲过刘涛的性格很直爽。此事,记录在我多年前写的Blog《参加Donews五周年聚会之爽与不爽》之中。那时我就非常佩服刘涛了,真是太直爽。

后来,我们创业曾考虑拉刘涛出来,但那时他所在的公司貌似很好,所以作罢。

后来,我老婆(@yatounini)生完孩子以后重新出来上班,刘涛和我另外一个朋友大鱼儿所在的公司也正在招人。我就跟刘涛说,希望让我老婆过去,跟他们学习学习。刘涛还是很直率的说,你老婆水平要是不行我们可不要啊。

其实那时候,我老婆的水平确实还很一般,我想让她过去主要目的也是希望她可以在一个比较靠谱的团队里面锻炼锻炼,提高一下水平,有刘涛和大鱼儿在的团队我百分百放心。

后来,因为我老婆的技术不行,编程习惯不好,刘涛有几次告诉我可能不想要她了。直到后来他和大鱼发现,我老婆做事情的时候往往还是很认真,也肯于学习,虽然底子差了一点,但是后来还是有很大进步的,我老婆才在那个公司真的立了足。

而因为刘涛的苛刻,我老婆也经常跟我抱怨刘涛要求太高了,甚至几次被气哭。

但是最后,我老婆还是理解了刘涛的苦心,从她自己的成长看到了刘涛的苛刻带来的诸多好处。

刘涛在项目中总是追求精益求精,对每个人check in的代码都会review,看到错误和不好的代码,都要求重做,或者他亲自改掉。因为他的严格,他们的项目才有了可靠的质量,也因为他的严格,我老婆的技术水平也有了很大的进步。

对比起来,我就很欠缺对完美追求的执着,也因为嫌麻烦不去做code review。在这个问题上实际上是有惨痛的教训的。我们做搜索产品的时候,有一个程序员水平虽然还可以,但是做事情很马虎。有很多次都出现了,他写一个代码花了一个星期,然后check in到我们的主线以后,后来,引发了很严重的事故,然后我和火炬花几个小时,甚至几天的时间调试才发现是他的bug。这些事故,很多都严重的影响了客户对我们服务的信任程度(不过幸亏我们的态度很诚恳,尽量及时解决问题,他们都原谅了我们)。

有一次是,我们的构建索引的老代码(我写的)因为省事儿用了Dom解析Xml,随着数据增长,内存耗费很严重。于是我要求他写一个Sax的解析程序,他自己没有搞定,在我做了demo后,指导后,终于做出来了。但是他把新的Sax实现加上去以后,居然没有去掉Dom实现。实际上,两个算法各跑了一遍。但是,他刚check in的时候,客户数据其实还不够大,而一个月后,客户的数据量暴增,我们的索引进程经常内存耗尽死掉。我调试了几次都没发现原因(数据量大测试也很麻烦),仔细看了代码后才发现他做的蠢事儿。这个错误非常明显,如果我们在他check in的时候,做code review是一定可以发现的。

还有一次是,让他来写一个文件下载功能。写好了以后简单测试都没有问题。过了一个月,有一天我们的lighttpd经常出问题,莫名其妙的php进程就占用了大量内存,甚至造成lighttpd无法响应。但是重起服务后,又没有任何问题了。出现问题的周期不固定,后来分析日志也很困难,出现问题的时候,有很多web行为,也很难看出有什么明显的入侵,或者反常访问。后来我怀疑是日志下载程序造成的,打开代码一看原来是他为了图省事儿调用file_get_contents函数来获取文件内容,下载小文件,小日志无所谓,用户下载几百兆的日志的时候,而且用多线程下载的时候,一下子就把服务器的内存耗尽了。这个问题很好解决,而且事先如果做了code review也是一定可以发现的。

所以我很后悔没有坚持拉刘涛跟我们一起创业,至少我们那个项目因为有了好的code review,能节省大量为解决各种程序bug耗费的时间。

刘涛很少写blog,最近才开始真的写一些,那天他刚写了一篇《一言难尽话PHP,兼谈我的编程经历》,我们公司的一个项目的负责人,一位非常牛的大牛,就跟我说要我帮忙把刘涛挖过来,因为这文章一看就知道刘涛是极少数真的懂PHP的人。

有刘涛这样直爽,勤奋和执着的朋友,或者说同道,时刻都提醒我不能对项目掉以轻心,要对质量有所追求,不要放弃自己观点,是我的第一盏明灯。

待续》》