程序员的年龄天花板
我是一名资深程序员,早在 2014 年,我就开始思索一个问题:程序员的年龄天花板究竟是多少岁?
其他行业里的老将
在农村,有不少 70 多岁的老人仍能从事农业生产。他们不仅能种植小麦、玉米等主要农作物,还会在自家屋后种植白菜、萝卜、西红柿、豆角等蔬菜,实现自给自足,无需依靠子女赡养。
褚时健 70 多岁时承包荒山种植橙子,如今“褚橙”已成为知名品牌。
在我家附近的同仁堂中医馆,坐诊的都是经验丰富的老先生,年轻医生往往乏人问津。
再看国家高级领导人,鲜少有年轻人的身影,60 多岁在这个群体中都算是年轻的。
老程序员的困境
在很多行业,年龄并非限制因素,有些行业甚至是越老越吃香。然而,程序员这个职业,很多人却认为是吃青春饭的,如同“以色事人”,年老色衰后便会陷入困境。但事实真的如此吗?
国内环境
国内 IT 公司的软件开发水平和意识整体欠佳,多数公司的产品差强人意。通常的做法是组织一批人开发产品,再投入大量资金进行推广。这种现状源于企业对利润的急切追求,而这种逐利心态又导致了对技术的短视,进而不重视技术人员和技术能力的培养,自然也就难以实现人才的培养和技术的积累。
计算机软件已成为社会发展的基础支撑,各行各业都需要软件开发,也都需要程序员。不同行业对技术的看法存在差异,虽然有部分公司不在上述情况之列,但绝大多数(超过 90%)的公司都是如此:只要产品做出来并赚到钱,就认为是成功,其他方面则被忽视。
在这样的心态和现实环境下,开发人员往往得不到足够的重视。许多公司老板认为,只要召集一批人就能完成项目,他们觉得项目的技术难度并不高,通过网上抄袭和加班就能解决问题。年轻人身体好、负担少,能够承受高强度的加班,在一定程度上可以弥补与老程序员在技术水平上的差距。而且,年轻人的薪资相对较低,一个老程序员的薪水可能足以雇佣几个年轻程序员,老板们认为多个年轻人合作或许能达到与老程序员相同的效果。
团队分类
为了探讨程序员的职业寿命,我们需要对公司或团队进行分类,大致可以分为以下三类:
- 外包型
- 定义:根据百度百科的解释,软件外包是企业为了专注核心竞争力业务、降低软件项目成本,将软件项目中的全部或部分工作发包给提供外包服务的企业的一种软件需求活动。
- 特点:大多数情况下,软件外包从事的是低技术含量、繁琐且不受重视的工作。我在“亲爱的程序猿们怎么找工作”一文中明确表达过观点:有产品可做时,尽量不要选择外包。我见过的外包业务包括对欧美、对日以及对华为等,前些年中国劳动力成本较低,外包业务十分发达,但如今印度的成本更低,软件开发规范程度更高,成为了更受青睐的外包市场。
- 缺点:
- 技术积累缺乏持续性:外包项目往往缺乏连贯性,难以形成系统的技术积累。
- 工作不稳定:专门从事外包的公司,有项目时员工需要全力工作,没有项目时员工可能面临失业。
- 缺乏话语权:在项目中,外包公司通常只能按照发包方的要求执行,缺乏自主决策的权力。
- 对程序员的影响:对于程序员来说,在外包类公司最容易遭遇年龄瓶颈。由于外包工作技术含量低,核心技术往往由发包方掌握,程序员的可替代性较强。老程序员薪资较高,每月 20K - 30K 较为常见,这对于老板来说是一笔不小的开支。而且,老程序员可能因家庭原因无法全身心投入加班,相比之下,年轻程序员更受青睐。即使老程序员技术能力较强,但由于外包项目的临时性,他们的技术也难以得到充分发挥。
- 项目型
- 定义:项目型公司以承接项目为主业,接到项目后开始工作并获取收益,如承接电信的网上营业厅项目、大型国企的政务信息化项目等。若接不到项目,公司可能会收缩规模、进行裁员。
- 行业分布:中国电信、中国移动、中国联通等电信企业,以及众多银行、金融企业、政企单位,养活了大量的项目型公司和团队。在电信、金融、石油、电力、教育、政务、铁路等各行各业,都有项目型公司的身影。
- 特点:项目型公司的项目延续性较差,项目完成后,通常只需少数懂业务的核心人员进行维护。而且,项目往往会被拆分成多个小项目,分配给不同的小公司,这使得项目竞争激烈,程序员的工作稳定性较差。
- 对程序员的影响:项目型公司在技术选择上有一定的自主性,程序员可以在某个行业积累经验,甚至有机会独立创业。但对于大多数普通程序员来说,职业的可持续性和不可替代性仍然较差。例如,在电信项目中,一个大项目可能会被分给多个小公司,由于人际关系等因素,程序员可能会在不同公司之间频繁跳槽。此外,公司认为有懂业务的核心人员带领几个年轻程序员就能完成项目,老程序员在与年轻人的竞争中往往处于劣势。
- 产品型
- 优势:对于程序员来说,产品型公司是最佳选择。公司开发并运营产品,产品会不断迭代和更新,这需要程序员深入了解产品和业务,并具备深厚的技术积累。随着对产品的了解加深,程序员的不可替代性会逐渐提高,价值也会更加凸显。当程序员的不可替代性足够高时,老板会考虑替换他们的成本,年轻程序员很难撼动他们的地位。
- 代表公司:腾讯、百度、阿里、爱奇艺、PPTV 等都是知名的产品型公司,这些公司拥有大量的开发人员,但与中国数百万程序员群体相比,产品型公司的开发人员数量仍然较少。大多数程序员还是集中在项目型公司和外包型公司。
程序员的价值所在
(注:我在“程序员保值的 4 个秘密”一文中也讨论过类似问题)
程序员的价值体现在其稀缺性上,这是亘古不变的道理。“闻道有先后,术业有专攻”,技术水平不能单纯以年龄来评判。有些程序员在学生时代的技术水平就已经超过了工作多年的人,也有工作十年的程序员不如工作三年的。当然,也有很多程序员的技术水平会随着年龄的增长而提高。
作为老程序员,只有技术能力与年龄同步增长,才能保持竞争力,否则就会逐渐掉队,面临被年轻人淘汰的风险。程序员若想让自己的价值持续增长,可以从以下几个方向努力:
- 选行业:在一个行业内持续积累经验,深入理解行业需求,能够使程序员的价值大幅提升。浏览招聘网站的岗位需求可以发现,99%的职位都要求相关行业背景。因此,选择一个有发展前景的行业至关重要,随着行业的发展,程序员的积累也会更有价值。
- 技术:对于程序员来说,业务积累和技术积累都非常重要。技术上,程序员的技术水平和视野应与年龄相匹配,如果能有超越年龄的技术积累和敏锐洞察力,那将更具竞争力。例如,掌握 Windows 内核或 Android 内核,能够熟练撰写各种驱动程序的程序员,月薪五六十 K 并不困难。在图像处理算法、视频解码算法等特定领域有专长的程序员,也能超越大多数同行,其价值不可估量。
- 产品意识:做产品需要有敏锐的感觉,虽然产品的把握通常被认为是产品经理的职责,但最终实现产品的是程序员。程序员对产品要有热情和热爱,就像天龙八部里的段誉对美女的深情一样,用心雕琢产品的每一个细节。只有这样,才能逐渐培养出对产品的独特感觉,形成产品意识,在程序员群体中脱颖而出。业务积累和技术积累分别如同屠龙刀和倚天剑,而产品意识则如同张无忌,能够将两者的威力发挥到极致。
公司的招聘要求分析
在实际招聘中,公司对程序员的要求通常涉及业务和技术两个方面。以下是两则招聘信息的分析:
- Android 开发工程师招聘:职位要求中的第 5 点涉及行业业务要求,第 1、2、3、4 点则是技术要求。
- 另一职位招聘:该职位要求以技术为主,但第 6 点仍然与行业业务相关。
其实,我认为一个人是否热爱自己所从事的工作非常重要。如果热爱工作,并且是真心热爱,那么就具备了快速发展的基础。然而,在招聘网站的招聘需求中,对这方面的要求很少出现,原因可能是这种热爱难以描述和量化,属于软指标。
结论
我的观点是:程序员的价值与年龄没有直接关系,价值不会随年龄增长而降低。作为软件开发人员,不应给自己设置年龄限制。很多时候,我们未能取得更大的成就,往往是因为先给自己设定了限制,从而束缚了自己的发展。
下面这张图来自 cnbeta 的文章“2014 年中国程序员调查报告”,它展示了国内程序员的年龄分布情况:
从图中可以看出,30 岁以上的程序员占比高达 48.62%,接近程序员群体的一半。这表明,并非如人们普遍认为的那样,程序员干不过三十岁。
2015 年 1 月 22 日,我参加 Qt 西安开发应用研讨会时,遇到一位 40 多岁的老程序员,他依然技术精湛。王江民 30 多岁开始写软件,43 岁推出了横扫杀毒软件市场的江民杀毒。我的老上司 40 来岁时仍在编写直播流媒体协议,所采用的 P2P 技术传输效率高且稳定。
年龄只是自然现象,而我们的经验、认知、能力和心智成熟度,在合理的情况下会随着年龄增长而提升。只要我们在正确的方向上不断积累,年龄不应成为我们前进的障碍。
国外也有相关研究,如“Is Programming Knowledge Related To Age?”(论文链接),这篇论文基于 Stack Overflow 上的数据分析得出结论:
- 程序员的技术能力可以持续提升到 50 岁或 60 岁。
- 老程序员在获取新技术方面的能力并不比年轻程序员差。
岁月或许会使我们的身体衰老,但只要保持年轻的心态,程序员依然能够在技术领域发光发热,让那些以年龄唱衰我们的人无话可说。