大龄程序员的未来在何方
程序员最怕的是老去。
大龄程序员的界定
早期网上流传着软件开发从业者干不过30岁的说法,后来又有干不过35岁、40岁、45岁等各种观点。为此,我曾写过一篇题为“程序员的年龄天花板”的文章来探讨这个问题,感兴趣的读者可以深入阅读。
为了便于讨论,本文采用通俗的定义,将过了30岁的程序员视为大龄程序员。若您对此定义有不同意见,可保留自己的看法。
人生的阶段发展理论
孔子的人生阶段概括
《论语•为政》篇中,孔子说:“吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十而从心所欲,不逾矩。”其中“三十而立”指人在三十岁之后,应稳定于某一职业,并有所建树。
舒伯的职业发展阶段理论
现代社会,美国学者舒伯(D.E.Super)对人生职业发展阶段的研究颇具影响力,他是世界职业规划发展史上的里程碑式人物。舒伯提出了以成长、探索、确立、维持、衰退为核心的五个阶段模型,每个阶段都有特定的职业课题,若当前阶段的课题未完成,会影响后续的职业发展和生活。
对舒伯理论感兴趣的读者,可通过搜索引擎了解其职业生涯阶段理论的细节。本文仅聚焦与大龄程序员相关的阶段。
在舒伯的生涯阶段中,25 - 44岁为确立阶段,该阶段的职业发展课题包括:
- 逐渐稳定于一项工作;
- 确立自己将来的保障;
- 发现适当的晋升路线。
作为程序员,不妨先深入理解这些课题,反思自身情况后再继续阅读。
确立阶段又可细分为两个小阶段:
- 25 - 30岁为修正期;
- 31 - 44岁为安定期。
我们所说的大龄程序员,通常处于30岁之后,即过了孔子所说的“三十而立”阶段,基本也处于舒伯理论中的安定期。若超过44岁,按照孔子的说法,应已达到“不惑”的境界。
31 - 44岁的安定期,是人生创造力最为旺盛的时期。若能专注于一项工作,必能有所成就,为未来奠定基础。
30岁是人生的一个重要节点,并非只有程序员会面临困惑,所有人都会经历这一阶段,且已有前人总结出一些有效的应对方法。
此外,25 - 32岁是人的婚育高峰期,此时人们会面临工作和生活的双重压力,若事业和家庭都不稳定,生活将变得十分艰难。
接下来,我们将聚焦于程序员群体进行深入分析。
技术人生的三个方面
对于程序员而言,有三个至关重要的方面:知识与技术、技术能力和阅历、业务积累。
知识、技术
程序员需要掌握编程语言、应用框架、开发工具等具体的知识和技术。不同的语言和技术适用于不同的应用场景,例如某些语言在解决特定问题时效率更高。
随着社会的发展和信息化、互联网化的深入,新的问题不断涌现,老的知识和技术可能无法满足需求,因此新的语言和技术不断涌现,如Go、Scala、Swift、ROR等。没有绝对最好的语言,只有最适合的语言。
面对这种情况,程序员需要保持学习的热情,掌握多种语言和技术,并根据社会和技术的发展不断调整自己的知识体系。早在几千年前,儒家经典《大学》就提出了“苟日新,日日新,又日新”的观点,这与程序员不断学习的需求相契合。
然而,有人认为过了30岁,家庭和事业的双重压力会让人身心疲惫,无暇学习,从而不再适合从事程序员工作。但实际上,31 - 44岁正是人精力充沛、创造力旺盛、学习能力较强的黄金时期。例如,王江民38岁转做软件开发,45岁创造了江民杀毒的传奇。在这个阶段,程序员凭借之前的积累,学习新知识的速度会更快,能够获得举一反三的学习体验。
技术能力与阅历
知识和技术是程序员较浅层面的能力,而技术能力与阅历则更为关键。技术能力是指运用具体知识和技术解决实际问题的水平,它在很大程度上决定了程序员的技术价值。
技术能力是在不断解决实际问题的过程中培养出来的。有些人善于总结和思考,技术能力提升较快;而有些人则停留在表面,技术能力提升缓慢。
以《天龙八部》中的人物为例,王语嫣掌握了大量的知识和技术,但缺乏实际开发能力,可作为程序员的鼓励师;而扫地僧超越了知识和技术的层面,阅历丰富,不拘泥于招式,是专业技术者追求的目标。
随着程序员年龄和工作经验的增加,技术能力和阅历的重要性和价值将超越知识和技术本身,这也是大龄程序员的价值所在。例如,应对大用户量、大业务量、大数据、大并发等挑战,需要多年的积累和经验,并非新手短期内能够掌握的。
业务积累
大部分软件是技术与业务的结合,在某些行业软件中,业务层面的知识和流程占比高达80%。因此,程序员熟悉业务至关重要。不同行业的软件需求差异巨大,如电商网站和测绘软件的开发要求截然不同。
业务积累与行业和企业选择密切相关,选择不同的行业和企业,将决定程序员所能积累的业务知识和经验。业务积累是程序员的重要价值体现,与技术阅历一样,经得起时间的考验。俗话说“隔行如隔山”“男怕入错行”,深刻理解业务并非易事,若只掌握编程语言和技术框架,而不了解业务,将难以发挥实际作用。
企业的分类
在“程序员的年龄天花板”一文中,我曾对软件企业进行过分类,包括外包型、项目型和产品型。下面结合前面提到的“技术人生的三个方面”进行详细分析。
外包型公司
外包型公司通过承接其他企业的部分或全部软件业务来发展,业务和技术都不稳定。其软件开发心态往往是“干活、交活、拿钱、完事儿”,在这种心态下,程序员难以有机会打磨产品,对技术能力和行业知识的积累都会产生不利影响。从企业成本考虑,更倾向于使用成本较低的年轻人,因此大龄程序员在这类公司的发展前景不容乐观。例如,老板可能认为35岁的程序员和22岁的程序员在开发App方面的能力差异不大,会选择让年轻人加班完成工作,从而出现劣币驱逐良币的现象。
项目型公司
项目型公司通过承接电信、银行、电力、政府等单位的软件项目为生,相比外包型公司稍好一些,技术选择相对自主,能够在某个行业积累经验。但如果项目规模小而多、行业不集中,则与外包型公司类似。此外,项目型公司在开发过程中更注重成本,对新技术的应用较为谨慎,这会减缓开发人员的技术更新速度,降低技术成长机会。
产品型公司
产品型公司是程序员的较好选择。产品要具有竞争力,要么依靠对业务的深刻理解,要么依靠技术上的领先优势。这类公司有利于程序员积累技术阅历和业务知识。
大龄程序员的将来
程序员的价值体现
程序员的价值主要体现在三个方面:语言和技术、技术能力与阅历、业务积累。简而言之,程序员最大的价值在于运用技术解决问题的能力,其中技术能力与阅历、业务积累更具持久性,更能经受时间的考验。
常见的四种职能取向
一般来说,程序员有四种常见的职能取向:管理者、专业技术者、自由职业者、创业者。
管理者可分为职能管理者和全面管理者,如CEO、总经理属于全面管理者,开发经理、项目经理等属于职能管理者。
专业技术者依靠自身技术为他人解决问题,创造价值,如程序员、测试工程师、UI设计师等。
自由职业者是脱离特定组织,独立工作的专业技术者。
创业者则是组建团队,开发产品或服务,实现自己的梦想。
大多数程序员的职能取向为专业技术者。例如,我个人从事管理工作6、7年后,又回归到专业技术领域,因为从事具体技术工作让我感到更加自在和快乐。每个程序员都应明确自己的职能取向,这样才能更好地规划未来。
关于“成功”的定义
有人认为30出头的程序员若不够成功,会面临巨大压力。但这里所说的“成功”,并非世俗意义上的财富、地位和荣誉,而是指找到适合自己的职业,实现自我价值。简单来说,就是从事自己喜欢的工作,获得成就感和快乐。我们不应被社会的统一价值取向和他人的期望所束缚,应按照自己的意愿生活。
程序员在企业中的发展
程序员常见的职业晋升通道有两条:技术通道和管理通道。
技术通道为:初级工程师 -> 中级工程师 -> 高级工程师 -> 架构师(专家) -> 技术总监 -> CTO。
管理通道为:工程师 -> 项目组长 -> 项目经理 -> 项目总监 -> 技术总监 -> CTO。
此外,还有一些交叉发展的机会,如开发转测试、产品经理、售前、售后、销售等。最后,程序员也可以选择离开软件行业,进入其他领域发展。
由于走管理路线的程序员较少,本文暂不讨论;对于转做其他职业的程序员,在此告别。下面主要探讨走技术路线的程序员的未来发展。
走技术路线的程序员怎么办
从常理来看,每个行业都有经验丰富的老将,程序员行业也不例外。但程序员往往对自己的未来有较高期望,担心停滞不前或走下坡路,因此会产生焦虑情绪,认为程序员是青春饭。
实际上,根据前面的分析,走技术路线的程序员只需保持学习能力,丰富技术能力与阅历,积累行业知识与经验,就能够持续发展。即使到了职业生涯的衰退阶段,也应坦然接受,这是人生的自然过程。
程序员的二八定律
在程序员群体中,存在着二八定律。在技术路线和管理路线的选择上,大约20%的人选择管理路线,80%的人选择技术通道。在技术通道中,只有20%的人能够成为高级软件工程师、架构师、技术专家、CTO等,而剩下的80%则需要维持自己的竞争力,保持价值不衰退。
大量的大龄程序员将面临无法晋升和如何维持竞争力的问题,这是必须面对的现实。任何行业的从业人员分布都呈金字塔型,我们应接受这一现实,并在此基础上谋求发展。
怎样面对将来
选择企业
对于走技术路线的程序员来说,选择企业至关重要。应选择有发展前景的行业和重视技术的产品型公司,这将影响其在技术路线上的发展高度。例如,我35岁找工作时,根据行业、企业和产品的情况,只选择了三家公司进行面试。
对于创业公司,如果能够承受一定的风险(金钱和时间成本),且创业团队和产品有潜力,可以尝试加入。例如,小米创立时,从摩托罗拉等公司招募了大量开发工程师。
稳定于一项工作
根据舒伯的职业生涯阶段理论,31 - 44岁是安定期,程序员应稳定于一项工作,寻找合适的晋升通道,为未来做好保障。频繁跳槽不利于职业发展,尤其是到了40岁还未在某个行业稳定下来,技术也缺乏连贯性,找工作时将面临较大困难。从招聘信息中可以看出,除了高级岗位,大部分岗位要求应聘者年龄在30岁以下。
不能晋升怎么办
在技术路线上,程序员可能会遇到无法晋升的情况,通常在稳定工作7年左右,即本科毕业33 - 35岁时出现。此时,需要具体问题具体分析:如果是企业环境限制了晋升,可能需要考虑换工作;如果是自身能力达到了天花板,则需要调整心态,发展其他兴趣爱好,平衡工作和生活。在这个阶段,有部分程序员会选择创业。
竞争力有区域性和相对性
程序员的价值和竞争力是相对的。例如,在大公司中无法晋升的程序员,在其他行业的小公司可能有机会担任技术总监或部门经理。如果看重职位和头衔,可以尝试这种发展路径。类似的例子还有很多,如乒乓球运动员何智丽在国内发展受限,移民日本后取得了辉煌战绩;国外的业余足球运动员或退役选手到中国后受到重视。
因此,大龄程序员为了发挥价值和竞争力,可以选择以下路径:
- 到其他公司,不换行业,利用技术优势谋求管理职能;
- 到能凸显自己技术价值的公司,继续从事开发工作;
- 到平均技术水平较差的地域,继续做开发。
学习其他技能
虽然大龄程序员可以通过保持学习和积累经验来维持竞争力,但并非所有人都能一直从事技术工作。大约80%的程序员可能会面临职业转型的问题,因此可以学习其他赚钱的技能,为未来做好准备。
职业之外的兴趣
程序员的生活不应只有工作,还应培养其他兴趣爱好,如提笼架鸟、雕刻、书法、围棋、游戏、写作、读书等。这些兴趣爱好可以滋养心灵,缓解纯技术工作带来的压力。很多人缺乏信仰,如果没有兴趣爱好,容易出现心理问题。
总之,大龄程序员的未来并非一片迷茫,只要保持学习、积累经验、明确方向,就能在职业生涯中找到自己的位置。预知更多内容,请持续关注后续文章。
——泰课在线