我每天还在写代码,与人讨论技术实现细节,35 岁那年,我写的 Moco 拿了 Oracle 的 Duke 选择奖。
思维误区
我还没开始工作的时候,有人就在说:程序员能做到 30 岁吗?我快到 30 岁时,有人在问:35 岁还能做程序员吗?过了 35 之后,我已经看到了新的讨论:40 岁程序员怎么办?估计 10 年之后,新的讨论会是:程序员 50 岁以后的职业发展是什么样子的。
这反映了一个重要的事实,程序员是中国的一个新兴职业,发展时间还不够长。当时间逐渐拉长,越来越多大龄程序员就会出现。
写代码和做管理
如果你热爱写代码,那就去写。但是,这里必须知道一个前提,写代码和写代码是不一样的。
以现在的普遍情况看,20 多岁的程序员大多属于初出茅庐,写代码大多是以完成功能为主,而到了 30 多岁,写程序大约十年左右,需要考虑的方方面面必然要更多,比如,这个需求是否合理,从架构层面会造成什么样的影响,是否能找到更简洁的解决方案,这个代码写出来别人是否容易理解等等。
30 岁之后,精力会下降,这是生理决定的,如果这时候还和年轻人比拼堆代码的速度,靠加班熬夜,那必然是输了。而且,这种做法始终在低水平徘徊,自己做时间长了也会心生厌倦,所以,这不是一个可持续的模式。
很多人想 30 岁就做管理,可是,哪有那么多人让你管理啊!为什么之前有那么多少年得志的故事?还是前面的那个逻辑,之前做的人少,所以,机会多。现在 IT 行业的人才积累已经达到了相当的规模,机会就会减少。当然,投身创业公司是另外一个选择,但前提是这个创业公司能做起来。不过,即便是有机会,为什么是你?
不管做什么,自己有本事才是前提。
成长之路
以我个人的成长经验来看,不断地和更高水平的人过招,是保证成长的前提。
初入职场,我也以为自己的成长路径会是写几年程序,然后,做管理。很幸运的是,在职业生涯之初,我遇到一个水平很高的人,他让我看到了一种心生向往的状态,于是,我就下定决心,成为一个优秀的程序员。更为幸运的是,我们俩成了很好的朋友,十几年下来,每当我进步了一些,他却又在我前面更远的地方。虽然我们做的领域截然不同,但从他身上得到的启发却一直激励我前进,比如,看到了他做的一个东西,我便下定决心有一个自己的代表作,这就是后来的 Moco。如今,他年近 40,依然是各大公司争相高薪邀请的人,而我知道,有他在前面奔跑,我就不能停下来。
加入 ThoughtWorks 的选择,也是为了与高手过招。2007 年加入时,那里汇聚了当时我听说过的许多牛人,后来,还有机会和 Martin Fowler 这样的大师请教问题。在 ThoughtWorks 工作的八年,让我打开了自己的眼界,能够更加虚心地向更多高手学习,得到了个人全方位的综合提高。
就发展而言,如果身边没有高手怎么办?那就去找一个能和高手近距离过招的地方。
不过,这里说的并不等价于大公司。大公司里固然有很多高手,但问题是你有多少机会和这些人一起工作。比如,我们知道 Jeff Dean 很厉害,但加入 Google 就能和他一起工作吗?所以,比起在哪里工作,和什么样的人在一起工作会更重要。
从正常选择公司的方式来说,面试是一个了解公司、了解团队的机会。如果负责招聘的人会和你一起工作,那就可以好好考察一番。如果不是,那一定要尝试见见团队,最重要的是,见见团队里的高手。如果这个高手的状态不能让你羡慕,那他就不是你的目标。
当然,有了高手,如何成长,那就是每个人自己的事情了。