我是一个老程序员了, 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?” ->
http://people.engr.ncsu.edu/ermurph3/papers/msr13.pdf,这个链接是英文的,pdf 版本,基于 Stack Overflow上的数据分析得出的结论。
- 程序员技术能力上升是可以到50岁或60岁的。
- 老程序员在获取新技术上的能力并不比年轻的程序员差。
随着年龄老去的,是我们的身体,而永葆年轻的,则是我们的心。心不老,青春在,宝刀寒光仍闪耀,依旧斩上将首级于万千敌阵中如儿戏尔。程序员,走自己的路,让用年龄唱衰我们的人说去吧。