程序员的职业生涯通常都会遇到一些为人熟知的职业瓶颈,比如35岁年龄危机、自身成长跟不上技术迭代、所处行业的衰落等等。特别是由于近期诸多客观环境对行业产生不利影响,不断听到各行各业程序员被裁员或者公司倒闭的消息。
在各自所处的细分行业领域,如何规划才能让职业生涯长期稳定呢,有这样几个思路:
对于应届生或者初入职场的程序员来说,往往还没有掌握全面的技术能力,也没有深度的行业经验,更不会有全栈开发经验,那精熟地掌握一种开发语言是非常有必要的。
比如说一些大厂对于应届生的考察,通常着重于笔试环节,甚至要求手写代码,考察的技术项也更针对细节,偏重于对基本功的考量;因为项目经验、产品开发都可以在实际工作中快速上手,没有扎实的基本功则会非常影响后期的技术成长。
而随着技术能力与行业经验的累积,在工作有5-8年以后成为一名高级开发人员时,企业往往更偏重对技术框架的原理与应用能力的考量,以广泛应用的Java语言为例,对于中高级开发人员的面试,往往会提及对SSM框架的理解,且并不局限于简单的应用层面。
所以在刚入行的阶段,选择一项流行的、通用的、个人感兴趣的技术作为敲门砖就是一条必经之路。
相信很多刚入行的程序员朋友都在为选择行业而苦恼,说一句通俗易懂的“鸡汤”:天之骄子必定是极少数,切不可妄自菲薄。
无论是企业招聘还是在做职业规划咨询当中,在程序员的序列里,都不乏职业生涯长期稳定优质的人,而且并不局限在前端、后端、算法等领域,或者专科毕业、中途转行等等从业背景。
那选择自己感兴趣/具备行业优势的行业作为起点也是职业规划的一部分。
近期遇到一个还算不错的案例:学过Java、MySQL、安卓开发、web开发等等,大学实习期间做过电商运营系统/APP等类型的项目。这种履历虽然不能算非常优秀,找到一份还OK的工作是没太大问题的,但偏偏就遇到了求职困境。
原因无非在于对行业的选择,他对游戏行业非常感兴趣,但无论个人经历、项目履历还是技术相关性都与游戏开发有一定的差距。后续一段时间也许有游戏行业内企业投出橄榄枝,但无论是讲平台实力加持还是对个人能力的提升,都不算是强强联合。
个人认为,选择偏向C端的软件开发业务入手,反而会更能成为其职业发展助力。
当已经在职场有了数年经验之后,就要考虑在某一细分领域做到及格线以上,至少在所处企业,同事们提及技术水平的时候,不会对自己有“某某某的技术很拉胯,他开发的功能总是需要别人擦屁股”之类的评价。
虽然在所有和技术相关的职业中,技术路线与管理路线的选择分歧一直存在,但对于程序员而言,在职业的前中期还是要以技术路线为主。
在以往与各行业程序员群体、特别是其中的管理人员沟通时,了解关于技术团队的管理和考核,往往更偏向于简单纯粹的方式,技术水平一直是对普通开发人员的必要考核项;
对于中基层的管理人员而言,能够指导下属和新人解决技术问题,培养其开发能力也是一项重要的管理能力。
在这样的情况下,能够在每个项目/业务的开发过程中,都表现出较为出色的技术能力尤为重要,也需要在职业初期就开始不断打磨个人技术。
曾遇到非常多的10年或10年经验以上的程序员,他们的技术能力就不再局限于一项技术,或者说有了前面三点的加持,一门语言/一项技术已经成为必备能力了。
在这个阶段,就需要具备一定的管理能力或者成为团队里的“多面手”。
很多时候,技术团队的负责人也会是项目经理的角色,或者承担内部项目开发的管理职能;另一方面,这两种身份的转变也会成为在比如35岁危机情况下的转型基础。
当然啦,也可以说“我非常喜欢技术、我不喜欢管人”去走技术专家路线,但技术牛≠高薪,成为技术专家的机会同样凤毛麟角;
也可能有另一种情况,比如某一名优秀的架构师,带领某支5-10人规模的中间件开发团队,内部的开发管理、技术培养、人才选拔同样需要一定的管理能力。
另外,在很多偏向业务开发的团队中,往往需要多语言能力来应对不同的业务场景;大多数在软件行业里沉浸多年,却依然在业内持续发展的“大拿”、“熟手”,往往都具有对多种常用语言和工具插件快速应用的能力,并能基于此再更好应对职业中后期的多类求职场景。
职业生涯规划伴随整个职业生命周期而存在,程序员行业作为一种与技术强相关的职业,不仅需要持续打磨技术保持技术水平,也需要在每个职业阶段不断自我定位,调整规划思路,在行业的起起伏伏中找到容身之处。