“你未来5年里打算做些什么?”,这貌似不难回答,许多人都能不假思索地说出答案。但我们应该再想得长远些:对软件开发者来说,有哪些职业发展道路是走得通的?诚然,我们干这行是因为热爱它,而且在这行里发展得还不错,可是你能一直干到50、60岁吗?对于那些渴望成为程序员的……程序员来说,怎么发展才是最好的呢?
要是我告诉你程序员有八种境界,你会怎么想?呵呵,可别太较真。
1不朽的
这是至高无上的境界。你的代码已经超越了生死。你将作为计算机史上的丰碑而被人铭记。其他程序员都会从你的代码和文字中汲取营养。你可能获得过图灵奖,也可能写过有影响力的论文,还可能引入了一项或几项就我们所知影响编程史进程的技术。你不仅只是拥有一个维基百科的词条,而且你的生平及作品会被所有网站所传颂。
穷尽一生,能达到这一境界的程序员屈指可数。
2成功的
这是指那些不仅举世闻名,而且基于他所写代码创立了公司——甚至创造出一个新行业——的程序员。这些程序员已经获得了真正的0级自由(译注3):他们可以自己决定自己做什么工作。而且他们还把这自由与志同道合者分享。
这是几乎所有程序员都渴望达到的境界。达到这一境界所需要的商业能力要多于编程能力。
3有名的
达到这一境界也不错,但前提是你要有一份稳定工作。
你在程序员圈子有名,但这并不代表你一定有能力挣钱并且养家糊口。有名诚可贵,成功价更高。你可能为一家知名大企业工作,也可能在一家有影响力的小公司就职,还可能是一个小规模创业团队的一员。不管你在哪儿,其他程序员都曾经听说过你,而且你正在积极促进行业发展。
4称职的
你很适合做一个软件开发者。你所掌握的技能游刃有余,也不必为找不到好工作而发愁。你的同事尊敬你。每个你效力过的公司都因你的加入而多少有所进步。
但是你还能怎么发展呢?
5平凡的
既然达到这一境界,那你应该有足够眼光看出自己并不是那种伟大的程序员,而且或许永远无法成为伟大的程序员。
有天赋不代表能成功。如果你具备商业和人际交往技能,那么你可能非常成功。如果你作为一个平凡程序员同时还能以此谋生,那么你绝对是有天赋的,只不过这天赋不一定是写代码。
不要小看自知之明的价值。你真正了解到的自己要比你以为了解到的少得多。天资驽钝没什么不好的,要勇于面对现实。你应该想清楚自己擅长做什么,然后向着自己擅长的方向披荆斩棘不断前行。
6业余的
业余程序员热爱编程。之所以说他们业余是因为,他们有些是前途光明的学生或实习生,有些是开源项目的贡献者,有些是空闲时爱编个搞笑程序或建个有趣网站的人。他们的代码或想法中洋溢着希望与激情。
达到这一境界是件好事,从这里可以迅速成长为称职的程序员。
7无名的
身处这一境界的是那些大家称作普通程序员的人,无名氏。他们能力(通常)不错但工作成果却泯然于众人,很可能为某家行业巨头工作。编程对他们来说只是工作而已,并不是他们生活的全部。当然,这么做也无可厚非。
8差劲的
这说的是那些一点编程技能都没有,却阴差阳错进入这行的程序员。他们鼓捣过的代码在他们的同事看来无异于痛苦与折磨——有一种情况例外,那就是他们的同事也都很差劲,他们甚至看不出你是否差劲。
这或许就是这一境界的显著特征。他们没有金刚钻,却揽了瓷器活儿。
这八种境界说来带有几分调侃。没有哪个程序员喜欢以按图索骥的方式来规划职业。但是想想一个程序员在10年、20年、30年、甚至一生之中到底能达到何种境界,这无疑是具有启发性的。你最崇拜的是哪些知名程序员?在他们所达到的境界中,哪些特征吸引你崇拜?