(注:本文曾发表于《程序员》201508期A)
我是一个老程序员了, 2014 年我不断在思考一个问题:程序员的年龄天花板到底是多少岁?
其他行业里的老将
农村有一些老人 70 多岁了还能种地,不但能种小麦玉米,还能在自己房子后面种点白菜、萝卜、西红柿、豆角什么的,自给自足,不靠孩子赡养。
褚时健70多岁承包荒山开始种橙,现在褚橙是知名品牌。
我们家不远处有个同仁堂,同仁堂里有中医馆,中医馆里都是老先生,太年轻的没人看。
你看国家高级领导人,都没个年轻的,60多岁就算少壮了……
老程序员啊
很多行业对年龄没有特别限制,有的行业甚至是越老越吃香,可程序员呢,很多人都觉得是吃青春饭的,是“以色事人”的,年老色衰就会很悲哀。
果真如此?
国内环境
国内的 IT 公司,软件开发水平和意识整体较差,多数公司做出来的产品差强人意,上一帮子人做出一东西来,再上一帮子人花一大把钱去推广,就这么个现状吧。这种现状是由逐利的急切性引起的,逐利的急切性又客观上造成了对技术的短视,再往下推,自然就是对技术人员和技术能力的不重视,最后也就谈不上人才的培养和技术的积累了。
计算机软件已经成为整个社会发展的基础支撑,各行各业都需要,各行各业也都需要开发软件的程序员。行业背景不同,对技术的看法自然会有不同。我前面概述的现状,自然也有一些公司不在其列,但大多数是如此的,90%以上是酱紫:东西做出来,钱赚到了,胜利,其它的,毛线。
在这样一种心态和现实下,做东西的人,谈不上多受重视,很多公司的老板觉得拉一帮子人就能把东西搞出来,他认为要做的东西根本就没什么技术难度,网上抄一抄,加班搞一搞,这么着就出来了。年轻人身体好,牵绊少,能拼能加班,可以弥补与老程序员在水平上的些许差距,为什么不用年轻人呢?是吧。你说呢。年轻人又便宜,一个老程序员的薪水可能可以雇好几个年轻小伙子,三个臭皮匠能顶诸葛亮,我几个人还干不过你一个么。
团队分类
为了讨论程序员的职业寿命,我们先得给公司或者团队分分类。大概有这么三类:
- 外包型
- 项目型
- 产品型
咱们一一来说一下吧。
外包型
什么是软件外包呢?
来来来,发挥剪报君的特长,看看百度百科的定义:
“
软件外包就是企业为了专注核心竞争力业务和降低软件项目成本,将软件项目中的全部或部分工作发包给提供外包服务的企业完成的软件需求活动。
”
看见了吧,大多数时候,软件外包干的就是人家不愿意干的脏活、累活、低技术含量的活。我在“亲爱的程序猿们怎么找工作”一文中已明确我的看法:有产品做,就不要做外包。
我见过的外包,有对欧美的,对日的,对华为的,这几类很多,前些年中国的劳动力成本低,外包业务很发达,现在印度成本更低并且软件开发规范程度更高,是比中国更受青睐的外包市场。
做软件外包的缺点有几个:
- 技术积累缺少持续性
- 不稳定
- 没有话语权
专门做外包的公司,有活儿了你就干,没活儿啦你可能就得滚蛋。这有什么可说的呢,我不养闲人呢亲。所以这是不稳定。
对程序员来讲,在外包类公司,是最容易遭遇年龄坎儿的。因为干的活儿技术含量低(核心的人家自己干啦),个人的可替代性就强,你一经验丰富的老程序员薪资又高,每月 20K、30K很常见啊,对老板来讲养不起啊,肉疼心也疼,搞几个年轻的吧,三千两千都有人干,还也能干得了,你说说,你一个人拿的钱能雇七八个年轻人,你多危险呢你。还有你事儿多,有老婆孩子,孩子学校不定什么事儿呢,晚上还得招呼孩子功课,加个班儿都不痛快,要你干么地吧。就算你技术很强,可外包这种性质,打一枪换个地方,活干完了就了事了,再强也没你用武之地呀。再说啦,留两个强人就行了,要那么多净浪费公司银子。
项目型
中国电信、中国移动、中国联通,电信三家公司,养活了数不尽的项目型公司和团队啊。还有一众银行、金融企业、政企,也养活了数不尽的项目型公司啊。
什么是项目型公司呢?就是以给人做项目为主业的公司,接到项目就开工,有钱赚,比如你接人家电信的网上营业厅,比如你接人家某某大型国企的政务信息化,等等;接不到项目呢,就收缩规模,裁员……就这种啦。我见过很多,电信、金融、石油、电力、教育、政务、铁路……,各行各业都需要这种项目型公司,用自己公司的人,帮别人干项目,干出来活所有权不归你公司,归人家,可延续性很差,也不需要多少人来维护,就是要维护,留上一两个核心的懂业务的就够了,其它人,鸟尽弓藏,没项目了你就只好走人了吧。
项目型公司比外包型稍强一些,技术上可以自己选择,也能够在某个行业长期积累经验,甚至你还有可能自己立山头自己干。不过对于不能拉队伍自己搞的普通程序员来说,还是可持续性差一些,可替代性差一些。我就见过电信的项目,一个大项目拆成多个小项目,分给七八个小公司来搞,今天你搞着呢,下一期另外一个小公司和对口主管关系好,把你替了……有些程序员会在出没于电信一个大楼里的几个公司之间跳来跳去……从这一点上讲,程序员也不重要啊,公司也不重要啊,这个公司不干还有那个,这个程序员不干还有那个,另外程序员的价值也不高啊,有个懂业务的,配几个小年轻,事儿也就能搞成,你说你老大不小的,怎么跟年轻人拼呢……
产品型
毋庸置疑,做产品的公司是程序员最好的选择。一个公司做了一个好产品,运营这个产品,产品会不断迭代、更新,程序员会跟着这个产品一直往前走,公司需要了解产品、了解业务、技术积累厚的人才,而要懂业务、懂产品、有积累,都需要时间,等你什么都了解差不多了,也就是个老程序员了不是。而且随着你对产品了解的越深,你的不可替代性就越高,价值就越能凸显出来。当你的不可替代性高时,老板就要考虑替代的成本。什么都不懂的年轻后生,根本撼不动你的地位。
做产品的公司有相当数量,也有很多知名的,比如腾讯、百度、阿里、爱奇艺、PPTV等等,开发人员也数量庞大,几千到几万人的都有,但是这样的公司所拥有的开发人员总数量,与中国几百万程序员群体相比,还不是一个数量级的呀。那更多的程序员在哪里呢?就在项目型公司、外包型公司。
程序员的价值所在
(注:我在“程序员保值的4个秘密”一文中讨论了和这节类似的问题)
对于程序员来讲,价值怎么体现?一个程序员的价值,就体现在他的稀缺性上。物以稀为贵么,亘古不变的道理。
“闻道有先后,术业有专攻”这句话很适用于程序员,直白点说,技术的精湛不是以年龄来评判的,有的朋友在上学时的技术水平已经比工作十来年的高了,有工作十年的水平不如工作三年的,当然也有很多程序员的技术水平是正比于年龄增长的。
作为一个老程序员,只有你的技术能力正比于年龄,才是合格的,否则就必然越走越慢,慢慢掉队,最终就只能面临被年轻人挤兑、淘汰的窘况,结果就是被迫离开程序员的队伍。
程序员要想让自己的价值持续增长,有这么几个方向可供参考。
(一)选行业
在一个行业内持续积累,对行业的理解到位,积累深厚,你的价值是巨大的。不信你去浏览招聘网站上的岗位需求,99%都要求相关行业背景。所以,选择一个靠谱的、前景好的行业非常重要,只要这个行业能够不断发展、前进,你的积累就是有价值的,你自己就是不断增值的。
(二)技术
程序员,业务积累是屠龙刀,技术积累是倚天剑,两个都有,那就逢山开路遇水搭桥没有走不通的路了,你一定是先锋部队尖刀兵,到哪里都具有超强的攻击性。
技术上最起码的要求是技术水平和视野对得起年龄,如果有超越年龄的积累和犀利,那就没话说了,地球人已经阻挡不了你前进的步伐了。
就技术来讲,假如你掌握了一门很难又很重要的技术,那单单是这一点,就很有价值。比如你熟悉 Windows 内核或 Android 内核,能够熟练撰写各种驱动,那找个月薪五六十K的工作不成问题。再比如你图像处理算法很牛,再比如你视频解码算法很牛,……像这些特定领域的算法,我们也叫它技术吧。如果你懂类似的算法并能实现之,恭喜你,你已经超越了 90% 的程序员了,你的重要性和价值将不可估量。
(三)产品意识
做产品也是讲感觉的,当然有时我们觉得对产品的把握是产品经理的事儿,这么讲对,也不对。产品经理虽然是不挂衔的 CEO ,但产品的最终实现,是要靠程序员的,假如你对产品没有热情、没有感觉,无所谓好无所谓坏,那很难做到出色了。
我有一个很朴素的想法,一个程序员,要想做一个不那么糟糕的产品,一定要有爱,就像天龙八部里的段誉哥哥,见到美女就爱得要死要活,对每一位妹妹的爱都是发自真心的、都是炽烈的、都是让人魂牵梦萦的。惟其如此,你才能像张京兆(张敞,曾任京兆尹)为妻子画眉那样用心雕琢你的产品,对每一个细节都念兹在兹直到完美。这是讲我们程序员要爱产品,爱各种各样的产品,是做出好产品的前提。
你爱你做的产品,打心眼里希望她好,就有了第一个前提了。那接下来就很容易进入角色了,每做一个产品都会有积累,走心嘛,没积累才奇怪。慢慢你就会培养出对产品的独特感觉,形成产品意识,鹤立于程序员群里了。
再罗嗦一点,业务积累是屠龙刀,技术积累是倚天剑,那产品意识就是张无忌了,由他来控制屠龙刀和倚天剑,那就能发挥无上威力了。
公司的招聘要求分析
在现实中,公司招聘程序员时,多数时候会提到业务和技术方面的任职要求,我截取了两则招聘信息,贴出来看看:
这是招聘 Android 开发工程师的,职位要求里的第5点,就是行业业务要求。1、2、3、4都是技术要求了。
再看一个:
这个职位要求很硬很牛逼了,大部分都是技术方面的,不过第6点,依然是行业业务相关的。
其实我比较中意的是一个人是否爱他喜欢他所做的事情,如果你爱,泛爱众,又是真爱,那你就有了坐着火箭飞行的基础了,如果没有这一点,嗯,顶多是做到称职而已。不过你翻遍招聘网站的招聘需求,这方面的要求都很少见到,原因大概是很难描述、量化,因为它实在是一个软指标。
结论
我要亮出我的观点,评说就任人了。
我的结论是:程序员的价值与年龄没有直接关系,价值不会反比于年龄。作为软件开发人员,自己不要给自己在年龄上设限,很多事情我们没做成,很多时候我们没能取得更大的成就,都是因为我们先给自己设置了限制,用这个限制禁锢了自己。
下面这张图来自 cnbeta 的文章“2014年中国程序员调查报告”,他说明了国内程序员的年龄分布情况:
图1 程序员年龄分布
谁说程序员干不过三十岁呢,图1表明,30岁以上的程序员占比高达 48.62%,占整个程序员群里的将近一半。2015年1月22日,我去参加 Qt 西安开发应用研讨会,有一哥们就是老程序员,40多了,宝刀正锋利呢。
王江民30多岁写软件,43岁搞出横扫杀软市场的江民杀毒。
我的老上司,40来岁了写直播流媒体协议,P2P的,传输效率高且稳定。
……
年龄只是一个自然现象,而我们的经验、认知、能力、心智成熟度,在合理的情况下,都是随着年龄增长的,廉颇不老,黄忠能战,只要你走在正确的方向上有值得称道的积累,缘何不能横刀立马顾盼自雄耶。
国外的研究论文和结论
让我们看一下国外牛人的研究吧:“ Is Programming Knowledge Related To Age? ”。这个链接是英文的,pdf 版本,基于 Stack Overflow上的数据分析得出的结论。嫌 E 文难看的,来看个中文的:“编程能力与编程年龄的关系”,该文引用了“Is Programming Knowledge Related To Age?”的数据和结论。
“Is Programming Knowledge Related To Age?”这篇论文的结论是:
- 程序员技术能力上升是可以到50岁或60岁的。
- 老程序员在获取新技术上的能力并不比年轻的程序员差。
随着年龄老去的,是我们的身体,而永葆年轻的,则是我们的心。心不老,青春在,宝刀寒光仍闪耀,依旧斩上将首级于万千敌阵中如儿戏尔。程序员,走自己的路,让用年龄唱衰我们的人说去吧。
--------