程序员能纯靠技术渡过中年危机吗?


作为曾经的半个程序员,分享一下个人经历。程序员会有中年危机,一个很大的因素来自:我们曾经引以为傲、赖以生存的开发技术会被淘汰。而学习新开发技术成本太高。看着快速崛起的年轻人,不免使人心生:廉颇老矣的感慨。但是如果眼光不仅仅局限在开发技术上,可以做的空间就大了很多。

我一直在做数据分析相关的工作。作为一个83年的老男人,最惨的就是:当我进入职场的时候,数据分析远远没有现在火热,互联网行业也远没有现在强大。我在职场起步阶段学的还是SAS。大多数分析主题以商业分析为主,很少用算法。做过数据挖掘项目,也局限在银行的外呼,运营商的流失用户挽留等特定领域。不但做的模型单一(其实就是逻辑回归),而且跟互联网行业没一毛钱关系。和现在全民all in机器学习的在校生比起来,简直弱爆了。毕竟人家人手一本西瓜书,天天上kaggle捞代码,张口随机森林闭口SVM,scikit-learn各种起飞。两下一对比,就显得我各种土鳖。

学习新开发技术对在校生容易,可对中年职场人士真是太难了。业余时间,回家带宝宝、打扫卫生、陪孩子出去玩,已经把人累的筋疲力尽。在企业也很少实战新数据的机会,毕竟大多数我们带出来的系统已经稳定,除非投身新公司新部门,否则很少有新技术使用机会。问题是,有几个中年人敢轻易换坑的。

<img src="https://pic1.zhimg.com/50/v2-8 ... ot%3B data-size="normal" data-rawwidth="597" data-rawheight="349" class="origin_image zh-lightbox-thumb" width="597" data-original="https://pic1.zhimg.com/v2-8c0c ... gt%3B

感觉就像自己好不容易弓马娴熟,结果人家换了机关枪……

幸运的是,30岁那年,一个前辈指点我,逐步走出了这种困局。他当时对我说的话,至今犹在耳边:

“你思路要开阔点,一个项目成功可不仅仅是写代码这么简单。你也做过很多项目效益分析,你自己想想,有几个项目是真的死于技术不行的。如果老板期望过高呢?如果给的资源不够呢?如果其他部门不配合你呢?你做精准营销,人家一线销售根本不鸟你,你怎么精准?如果你能从结果出发,倒推做成项目需要什么。用这些分析去影响业务部门,岂不是比别人挖好了坑,自己边骂边填更好?”

这段经历直接影响了我后来的职业发展。确实,为什么要一辈子做爬坑的那个,而不试着拿过挖坑的锹呢?这就开启了我转变的第一步:摆脱接需求→做开发→交结果的被动思维,站在如何做成一个对企业有用的项目的角度思考问题。

上一个台阶看问题,就发现影响项目成功的因素有很多,技术只占其中一部分。特别是销售、市场、运营类项目。这些项目本质上还是要和人打交道。无论是做经营分析、做精准营销、做个性化推送、最后还是要靠各部门通力合作。从做好项目的角度来看,还是有很多发挥余空间的。

<img src="https://pic1.zhimg.com/50/v2-f ... ot%3B data-size="normal" data-rawwidth="512" data-rawheight="432" class="origin_image zh-lightbox-thumb" width="512" data-original="https://pic1.zhimg.com/v2-f32b ... gt%3B

项目成功八要素

这个时候,开启第二步思考:如果让我自己来挖这个坑,我会怎么挖?顺着这个思路,我开始反复复盘自己经过的大大小小的项目。站在项目全局而非仅仅是分析建模的角度去复盘问题。复盘的时候经常会遇到信息不全的问题。很多信息被业务部门掌握。这时候就充分发挥自己爱好喝酒撸串的优势,广结善缘。有不懂的直接拉伙伴出来吃个饭讨教,进步的速度还是很快的。

这样我便慢慢走上管理道路。之后5年,我做的技术方面的东西越来越少,最后彻底转向业务方向。等到我有了自己的团队,就几乎不怎么碰代码了。然而,我在项目里承担的责任一点都没有减轻,因为除了技术以外,真的还有很多工作需要做的。

<img src="https://pic4.zhimg.com/50/v2-d ... ot%3B data-size="normal" data-rawwidth="953" data-rawheight="507" class="origin_image zh-lightbox-thumb" width="953" data-original="https://pic4.zhimg.com/v2-d2e2 ... gt%3B

这里大部分是软实力,可这些软实力能结结实实的为项目保驾护航

有些同学可能会说:这已经是管理工作了呀。确实如此。不过做技术出身的人做管理,会比业务线出身的人有一定优势。我们了解技术实现的具体方式,纯业务出身则把它看成一个黑箱。这样我们能更准确的评估问题,找到靠谱的解决方案。而纯业务出身的经理人,经常把项目拖到坑里去。

比如这5年来,我服务的很多客户是传统行业,他们想搭上O2O、互联网+、消费升级、新零售等新东西的顺风车。然而,相当多传统行业经理人缺少对技术的基本了解。就拿精准营销类项目举例。他们只能从结果,看到别人发了一个短信,做了一个推送,但完全不知道在这背后隐藏着多少东西。这就导致,他们会低估投入成本,高估了效果。最后做起项目来各种东施效颦。

而我参与项目时就发现:相当多的传统企业,数据建设都很滞后;不同系统数据间缺乏关联,基础数据字段缺失严重;一线业务部门和总部脱节;尾大不掉、骄兵难驭的情况也很常见。我从不会急匆匆向客户说:“用户画像系统一般有三层结构”“关联分析常用Apriori算法”这些话。而是从最基础的数据字段、采集流程入手,先摸清水到底有多深。在设计方案的时候,先考虑合作部门的利益,尽可能把其他部门拖下水。这样项目的数据基础很扎实,推进阻力相对小,分阶段输出成果。几年下来,累积的口碑和经验还是不少的。

在这种工作中,我也慢慢清晰了自己在团队中定位。我主要负责和客户站在一条战壕,面对各方挑战,诸如:“凭什么这个项目值得投入300万?这个项目能为公司创造多少业绩?到底这样验证推荐系统效果?这次营销新增业绩多少?凭什么说新增业绩是系统的功劳不是销售部的功劳?”扫清了这些障碍,客户在公司里有个更大的功绩。项目的费用、时间、成果认证也就有了保障。剩下的交给更年轻,更有活力的小伙子们。现在我的团队里也有很年轻的做算法的小伙。他们比我懂得多,比我搞算法有热情。干活的时候他们打主力,我就打个辅助。然而我却并不担心被他们取代,大家合作的很愉快。

之后就发现,当找好自己的定位以后,就不会害怕新人的崛起。因为大家各有各的长处。总的来看,新人重技术,老人重结果。新人喜欢高精尖,老人喜欢稳重实。

新人看PPT,都喜欢说:哇塞,这一页好漂亮,用什么排版工具画的?老人看ppt,都先问这个是做给谁看的,想表达什么。

新人做分析,都喜欢先想:这个问题可以用个什么模型。而老兵去做分析,都喜欢先看:你们的数据是从哪些系统产生的,产生数据需要什么流程,有哪些字段,这些字段在业务上有什么含义,基础质量如何。

这是中年人的优势。经历多了以后,我们就不会急于炫耀技巧,而是认真的围绕结果想过程。过程越细越好,每一个忽略的细节,都可能是日后爬不出的大坑。

然而,技术出身的往业务或者管理上走,也有特殊的缺点。性格可能是一个方面,好在我个性比较活泼,在这方面没有很大阻碍。业务经验是另一方面,做业务的人笔杆子很硬,嘴巴很锋利,很多时候讨论起来,你明明知道他在瞎扯,就是扯不过他。为此我也在不断努力,比如上知乎写文章也是练习笔杆子的方式之一。

可能有些同学会觉得这个过程太辛苦。然而,想要不被淘汰就是要辛苦啊。或者很辛苦的挤出时间学习新的技术,保持不被时代淘汰。或者很辛苦的克服能力短板,向综合方向发展,往业务和管理上走。其实,大家细想一下,那些被中年危机淘汰的程序员,不正是趁着年轻进了大公司,做个螺丝钉,之后生活安逸,技术没进步,业务没长进的人吗?

当然,还有其他很多方式可以走出程序员中年困局。就我身边的朋友:

有些和别人合伙创业做CTO去了

有些在大企业混个技术管理岗安稳度日

有些转身做新入行的培训(学会Java,走遍天下!)

有些把BI分析部改成AI分析部,继续在技术领域奋战

总之保持努力,保持进步,总有好前途,与大家共勉。

链接:https://www.zhihu.com/question ... 25900

来源:知乎**
已邀请:

要回复问题请先登录注册