大龄程序员的未来在何方
大家都对大龄技术人员的未来非常关心,有的迷惘,有的坚定,不一而足。因此,专门来谈谈这个问题。
大龄程序员的界定
老早网上有人说,软件开发干不过30岁,后来又有人说干不过35岁,后来又有人说干不过40岁,后来又有人说干不过45岁……各种说法很多,我的订阅号“程序视界”里有一篇题为“程序员的年龄怎么着了”的文章,感兴趣的可以看看。
这里我采取通俗的说法,认为过了30岁的程序员算是大龄程序员,只是为了讨论方便,不同意的请保留自己的意见。
人生的阶段发展理论
《论语·为政》篇:
子曰:“吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十而从心所欲,不逾矩。”
这是至圣先师孔老夫子对人一生的发展阶段的精辟概括,里面谈到三十而立。所谓三十而立,是指人在三十岁之后,就应该在稳定在某一个职业上,有所建树。
舒伯对人的生命发展过程,提出了以成长、探索、确立、维持、衰退为中心的5个阶段模型。每个阶段都有不同的职业课题需要完成,当前阶段的职业课题没有完成的话,就会影响后续的职业发展和生活。
在舒伯的生涯阶段里有个确立阶段,25岁~44岁。在这个阶段,职业上的发展课题有这些:
●逐渐稳定于一项工作。
●确立自己将来的保障。
●发现适当的晋升路线。
确立阶段又可以细分为两个小阶段:
●25~30岁,修正期。
●31~44岁,安定期。
我们所说的大龄程序员,就是30岁往后,即过了孔老夫子所说的三十而立阶段的程序员,大龄程序员基本也处在舒伯老前辈提出的安定期内。你要说你超过44岁了,按孔老夫子所说,应该已经不惑了。
31~44岁这个安定期,其实是人生最富有创造力的阶段,如果能稳定到一项工作上,一定可以有所成就,为将来打下保障。
30岁这个年龄,是每个人都会遇到的,你不是一个人在困惑,程序员,世界上所有的人都会经历这个阶段。而且,已经有人经历过并提出了一些有效的应对措施。
还有一点很重要,25~32岁是人的婚育高峰,所以,此时人会面临工作、生活的双重压力,事业家庭两头忙,身心俱疲。假如两头都不定,那就基本没法愉快地生活了。
技术人生的三个方面
本节会谈到对程序员来讲至关重要的三点:
●知识、技术
●技术能力和阅历
●业务积累
前面咱说过,30岁是所有人都会面临的人生转折节点,那么对于程序员来讲,这样的节点有什么特殊的表现和含义呢?
软件现在已经成为各行各业的基础服务,具有非常特别的属性:软件本身形成了一种产业,又和其他产业结合形成了交叉领域。
说白点,纯粹的代码没有意义,解决现实问题是软件存在的最大意义。而现实问题来自各行各业,所以,大部分的软件产品,是软件技术和行业需求的有机结合。
所以,多数程序员的工作方式是这样的:使用某种开发工具、通过编程语言来实现一个解决特定问题和需求的软件。
1.知识、技术
程序员需要掌握编程语言、应用框架、开发工具等这些具体的知识和技术,这是最基本的。
不同的语言和技术,都有特定的应用场景,这种语言解决对应问题效率高,那种语言解决其他问题效率高。
随着人类社会的不断发展,随着信息化和互联网化的不断深入深化,现实问题越来越多,越来越复杂,老的知识、技术在面对新的问题时可能力不从心或效率低下,所以不断有新的语言和技术问世,比如Go、Scala、Swift、ROR,都才出现没多久,都是因为特定领域问题而出现的。没有最好的语言,只有最合适的语言。
面对这样的现状,程序员就需要保持学习,为了更好地解决问题,可能需要掌握多种语言和技术,而且会随着社会的发展和技术的发展不断地调整自己的知识、技术图谱。
所以,早在几千年前,我们的儒家经典《大学》就预料到了将来会有程序员这种人群,对他们的生活做出了概括性的预言:“苟日新,日日新,又日新”。
这就是程序员面临的知识、技术现状,所以有人觉得过了30岁奔四张去的时候,家庭事业两头忙,身心疲惫精力不足没时间充电没时间学习不再适合做程序员了。
这是一种现状,当然它对某些人如此,对另外一些人则不然。其实,31~44岁,正是人年富力强精力旺盛创造力爆棚学习能力焕发第二春的黄金阶段。不信你去看看舒伯的生涯彩虹图,一看便知。
举个例子,王江民就是这个时候(38岁)转做软件开发,后来(45岁)一骑独行白衣飘飘杀进中关村创造了江民杀毒的传奇历史,塑造了一代软件神话。
在30岁到44岁这个阶段,如果你还在做程序员,对自己的学习模式一定有所了解了,加上之前的积累,学起新东西来很快,应该会不断收获举一反三、触类旁通的愉快体验。
2.技术能力与阅历
对程序员来讲,知识、技术是一方面,是容易习得的,是较浅的层面。较深的层面,就是技术能力与阅历。
技术能力是指对具体的知识和技术的运用水平。它在很大程度上决定了一个程序员身上的技术价值。
技术能力是在不断地运用知识、技术解决现实问题的过程中培养出来的。在这个过程中,有的人爱琢磨、好总结、能升华、技术能力提升很快,一年可能收获一般人两三年的技术经验;有的人可能会停留在写段代码、写完了事这种层面,可能干三年不如人家干一年。
《天龙八部》中的神仙姐姐王语嫣,很多少年看了都很喜欢。从IT的角度看,她实际上就是一个掌握了很多知识、技术的字典型程序员,但不会实际开发。当然,她也可以是很妙的程序员鼓励师,既能极大激励程序员的干劲,又能在必要时提供字典式的帮助与指导。
与王语嫣对应的另一个人物是扫地僧,超越了知识、技术,阅历极深,不拘泥于招式,一抬手一投足就拍“死”了慕容博和萧远山这种超强高手。他是我们专业技术者的梦中梦。
扯了这么多,我想说的是,技术能力和阅历,随着程序员年龄和工作经验的增加,其重要性和价值将超越知识、技术本身。这是我们必须意识到的,也是老江湖的价值所在。
你可以在三两个月学会服务端开发,但如何应对大用户量、大业务量、大数据、大并发带来的挑战,绝对不是一个小白三两个月能搞定的,不积累5~8年,不随着企业的产品、服务的发展而经历技术架构的变迁,你很难有能力去解决这些问题。
3.业务积累
大部分软件是技术和业务的结合,甚至有的行业软件,开发技术只占20%,80%的都是业务层面的知识、流程。所以,对于一个程序员来讲,熟悉业务也是非常重要的。做电商网站和测绘软件绝对是天差地别。
业务和行业紧密相关,你选择一个行业,选择一家企业,就会决定你能积累的产业、业务知识、经验。而这部分业务积累,是程序员的重要价值所在,它和技术阅历一样是经得起时间考验的。
有句老话,早已告诉了我们业务积累的重要性:隔行如隔山。还有一句老话也说明了同样的道理:男怕入错行。
学一门编程语言容易,深刻理解业务却没那么简单。而你不理解业务,空有编程语言和应用技术框架,实际上没什么用。这就是我们强调业务积累的原因。