程序员中年危机这件事,背后涵盖着大家满满的焦虑。

焦虑的来源从内看,是不断增长的期望和现状之间的差距;从外看,则是市场人才上的竞争导致的危机意识。

内部原因大家见仁见智,外部原因,通过在市场上的观察来看,程序员的市场竞争确是更加激烈了:

  1. 互联网整个行业的人才储备越来越充裕,相关专业的毕业生无论从数量还是质量上都不断上升。根据教育部的统计,2016 年有高校毕业生 765 万人,为历年最高;而与编程相关的专业毕业人数达到了总人数的 8% 以上。
  2. 互联网行业的野蛮生长时期已经接近尾声, 大型互联网公司的基础招聘需求逐渐萎缩。BAT 等巨头企业 2016 年的校招需求数量均不足前两年巅峰时期的一半,与此相对的是对高端招聘的需求越来越旺盛。
  3. 创业公司更是面临大批死亡和被收购的困境。 共享单车从异军突起到开始收割仅仅是 1 年半的时间。越来越短的行业周期很难继续为基础研发的工程师提供稳定大量的岗位需求。而创业公司的大规模倒闭也戳破了行业中的薪酬泡沫。
  4. 科技的发展并不一定意味着岗位的增加,相反,有时也会意味着岗位的减少。 以测试为例,曾经测试都是以手动测试为主,而如今一二线互联网公司已鲜少见到手动测试,大多都是开发自动化测试工具的测试开发,因而对员工素质的要求大幅度提高,而数量需求则大幅度减少。

在这样的市场竞争背景下,被「淘汰」,迎来中年危机,似乎更加「容易」了。

那么,如同这个提问背后的诉求:程序员要做到什么才能让自己10年之后,尽量不迎来或者安稳渡过自己的「中年危机」?

人才顾问和高端猎头们,他们总结出以下四点可以努力的方向:

  1. 拓宽业务场景;
  2. 把握职场节奏;
  3. 训练复合技能;
  4. 保持紧密沟通。

一、拓宽业务场景

我们会在很多场合听到对「精钻」这个词语的推崇,包括在职场上,我们常常听到前辈教导我们对待工作要精益求精,但事实上,在某一方面做到万里挑一的大牛是一条可取的道路,却不是职业发展的唯一道路。

尤其是对于那些未来的职业发展规划是进入明星创业团队担任技术负责人的程序员来说,在之前的积累过程中寻找机会尽量多地接触各类业务场景并寻找解决方案,可能是一条更可行的路径。

这里的业务场景分为大业务场景,也分为小业务场景。大业务场景即不同的细分行业,如电商、内容、视频、共享平台等等。我们建议程序员们在进行工作选择的时候不要被自己原先所属的细分领域太过限制,认为自己原来在电商公司以后也必须在电商公司。事实上,多去尝试不同领域的公司,去了解不同领域的公司在技术实现上有什么异同,对于程序员更深入地理解技术是很有帮助的。

尤其是当今行业发展日新月异,某一细分领域很难在一个人 15-20 年的职业生涯中一直处于蓬勃发展的状态,如果之后又出现了新的细分市场,复合背景积累的经验会帮助程序员快速切入到新的细分市场。

而小业务场景则是指同一个技术在同一家公司的不同业务范畴。例如算法方向,可以分为排序、推荐、NLP、图像识别和用户行为研究等,攻坚某一领域是一条发展路径,但横跨不是一个领域也是一条发展路径。这就需要程序员自己把握机会,不断跳出舒适区去承担新的业务和需求。

比如一位程序员老鸟,他之前在 BAT 某公司任职 6 年,担任算法方向的程序员。由于之前 6 年公司业务增长很快,他在不同的研发 team 都参与过项目,因此在广告、排序、推荐、NLP和用户行为研究领域都有一定经验,但却没有深入的研究。对此他自己也在跳槽的时候表示过担忧:「业务在哪儿需要就打到哪儿,什么都会一点,什么都不精。」

然而没想到的是,这样的背景非常受中小型互联网公司的欢迎。在经过了几家面试之后,最终陈先生拿到了一家已经 D 轮融资的公司算法负责人的 offer,薪水也比之前有了大幅度提高。

如果没有这样的机会,也可以做到在某一方面非常精通,然后对其他方面有所了解,将自身培养成「T字型」人才。


二、把握职场节奏

在职场上有一个时间标准:3 年。 3 年时间,一定要在工作内容和职级上有一个质的变化,这个变化可以通过升职得到,也可以通过跳槽达成目标。

初入职场的 3 年,主要的工作内容就是夯实基础,此时基本处于「完成上级交付的任务」这样的阶段。但在这个过程中,员工不能仅仅完成任务了事,而是要不断思考为什么上级要布置这个任务,这个需求是怎么来的,用于解决什么问题,有没有更好的解决方案等等。

之后的 3 年,也就是职业生涯的 3-5 年,作为程序员,需要达到一个小 leader 的层级,即带领一个小团队(可以仅仅有几个人)负责某一个某块或是功能的研发,此时在上个阶段积累的经验和关于解决方案的各种想法的作用便凸显出来。而此时作为小团队负责人的角色,程序员更多地需要关注上下游的逻辑,能够形成完整的逻辑链条。

工作经验的 5-8 年,此时程序员已经进阶成了技术负责人,可以独立负责某一个产品的研发,可以成功地推动产品从 0-1 的阶段,此时更多需要关注的便是跨部门之间的合作与沟通,确保研发行程的按时交付。与此同时,更多地关注一些产品设计方面的内容,会对进一步的晋升很有帮助。

最后一个阶段,即工作 10 年以上,此时达到研发总监或是更高的职位会是一个比较理想的状态,而对于这个层次的要求,是对于整个行业能有比较清晰深入的判断,能够感知未来技术发展的方向并为公司提前布局。


三、训练复合技能

除了编程之外,程序员要尽量培养一些其他方面的技能,例如演讲、写作等等。这样做一方面可以为程序员提供一些兼职机会,如主讲技术相关的直播课程、参考文章或书籍的撰写等。类似的机会在提供报酬的同时也会增加员工的知名度和行业影响力,更有甚者,在社交媒体上发表了相关文章之后,吸引了一批志同道合的同行,开始合伙创业,有了更大的机遇。

就算没有这些额外的收益,复合技能的人才在公司内部也会受到青睐。

比如某知名互联网企业的程序员张先生,由于他在面试时给 HR 看了自己在知乎等技术论坛上的文章,因此入职之后 HR 邀请他参与公司每周五下午的技术分享会并作为主讲人之一。

刚开始张先生还很犹豫,毕竟本身的工作内容已经很繁多,很怕接了这个任务之后力有未逮,反而影响了自己的开发进度。但后来因为同事的鼓励和 HR 的反复邀请,张先生还是答应成为主讲人,并且利用每周末的时间准备讲座材料。

因为在技术分享会上的良好表现,入职后不久,张先生被上级重用并在一年后得到了升职。


四、保持紧密沟通

有些程序员认为自己做的是技术性工作,只要写好代码就可以了。这是错误的认知。根据以往服务候选人的经验来看,那些有意识在工作之余关注行业动态,积攒人脉资源,并且乐于与同行沟通的程序员,往往在职业发展的路上走得更远。

一方面,程序员可以通过这些方式随时评估自己在市场上的价值和优势,当行业和技术的风向发生转变时,及时对自身查漏补缺,避免被时代抛弃。另一方面,人脉资源的积累,有时也能对自己下一次换工作起到雪中送炭的作用。

可见,行业信息、公司动态的互通有无对于职业发展有着至关重要的影响,准确地把握行业动态有助于员工抓住一些转瞬即逝的机会。

而对于信息的获取,自己的朋友、前同事、靠谱的猎头、职业顾问等,这些都是可以利用的资源,同时也可以参加一些展览、峰会等线下活动。尤其对于那些自己感兴趣的技术方向,尽量积累一些人脉资源,一次有效的内推往往比海投简历更有效果。

人无远虑必有近忧,有危机意识当然很好,但是成长更加忌讳的是冥思苦想,停滞不前