编程能力与编程年龄
程序员这个职业究竟可以干多少年,在中国这片神奇的土地上,很多人都说只能干到30岁,然后就需要转型,就像《程序员技术练级攻略》这篇文章很多人回复到这种玩法会玩死人的一样。我在很多面试中,问到应聘者未来的规划都能听到好些应聘都说程序员是个青春饭。因为,大多数程序员都认为,编程这个事只能干到30岁,最多35岁吧。每每我听到这样的言论,都让我感到相当的无语,大家都希望能像《21天速成C++》那样速成,好多时候超级有想和他们争论的冲动,但后来想想算了,因为你无法帮助那些只想呆在井底思维封闭而且想走捷径速成的人。
今天,我们又来谈这个老话题,因为我看到一篇论文,但是也一定会有很多人都会找出各种理由来论证这篇论文的是错的,无所谓了,我把这篇文章送给那些和我一样准备为技术和编程执着和坚持的人。
目录
论文
首先,我们先来看一篇论文《Is Programming Knowledge Related to Age?》(PDF链接),这篇论文是两个北卡罗莱纳州立大学计算机科学系的两个人Patrick Morrison 和 Emerson Murphy-Hill 对StackOverflow.com上的用户做了相关的数据挖掘得出来的一些数据。(我们知道StackOverflow.com上的数据是公开的,任何人都可以用来分析和统计,所以这篇论文的真实性是有的)
数据采样和清洗条件如下:(数据全量是1694981用户,平均年龄30.3岁)
- 15-70岁之间的用户(这年龄段的用户被称做“Working age”),当然,有很多用户没有输入年龄,这些用户都被过滤了。
- 用户在2012年内都回答过问题。因为StackOverflow在2012年对问题和答案的质量要求得比以前高了一倍,所以更能反映程序员的真实水平。
- Reputation声望在2-100K之间。(注:StackOverflow的用户Reputation是得到社会认可的,在面试和招聘中是硬通货币。比大学的学分更有价值)
上述的条件一共过滤出84,248名程序员,平均年龄:29.02岁,平均Reputaion在1073.9分。
年龄分布图
下面我们来看一下他们的年龄分布图:我们可以看到程序员年纪的正态分布(高点在25岁左右,但是中点在29岁左右)
能力和年龄分布图
然后,计算每个人每个月的Reputation,这样可以找到这个用户的真正的活跃时间,这样便于计算这个程序员的真实能力。(总声望 / 活跃时间),可以得到他平均每个月得来的Reputation。
我们来看看程序员的能力和年龄段的分布图:(你可能会大吃一惊)
上图中我们可以看到,程序员的能力在从25岁左右开始上升,一直到50岁后才会开始下降。所以说,程序员吃的不是青春饭。只有码农,靠蛮力,用体力而不是用脑力的程序员才是吃青春饭的人。
年纪大的人是否跟不上新技术
论文的作者分析了Tag,用了最近5年内比较流行的技术Tag,然后用了一套比较严谨的算法来查看那些所谓的“老程序员”是否在新技术上跟上不了,所谓跟不上,也就是这些老的程序员在回答这些新技术上并不活跃。所谓老,就是37岁以上的程序员(就是我现在的年纪)。
得到了下表:可以看到,老程序员和年轻的程序员对于一些新技术的学习来说也是差不多的,甚至有些项还超过了年轻的程序员。
结论
论文的结论是:
1)程序员技术能力上升是可以到50岁或60岁的。
2)老程序员在获取新技术上的能力并不比年轻的程序员差。
我的一些感受
最后,我说一说我的一些感受:
- 这些年来的对于外企和国内感受—— 国外牛B的IT公司的工程能力并不见得比国内的要强多少,但是国外那些NB的IT公司的架构和设计能力远远超过国内的公司,最可怕的是,那些有超强架构和设计能力的“老程序员们”还战斗在一线,这些战斗在一线的老鸟的能力绝对超过100个普能的新手。
- 对年轻程序员的感受——国内新一代的程序员们太浮燥了。老实说,对于大多数人来说,如果你没有编程到30岁,你还不能成为一个“合格”的程序员。所以,并不是编程编到30岁就玩完了,而是编程编到30岁才刚刚入门。这些不合格的程序,整天BS这个不好,那个不好的,而且喜欢速成,好大喜功。
- 我是一个奔四的人了,编程就像登山一样,越往上爬人越少,所以,在我这个年纪还有想法,对编程还有热情的人不多了,基本上都是转Manager了。其实,什么职位,Title都是虚的,公司没了什么都没了,只有技术才是硬通货。而且,越是这个年纪还在玩编程玩技术的人,其实其经验和能力都是比较强的,都是中坚力量,如果还有其它这个年纪和我一样的人,求交往。
(全文完)
(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)
《编程能力与编程年龄》的相关评论
@csrgxtu 是不是少个‘not’?
@csrgxtu
您好,是不是少了个“not”?
一线编程也有多年,接触面不少,反而觉得自己不专业了,尤其是被推到重要位置上,更觉得力不从心。
支持,把您当教父了,我也会一直做技术,一直写代码
我很喜欢做技术,但是现实情况是,你在底层做技术干的都是体力活,只有转manager才能去和人讨论架构,讨论高级一点的问题
脚踏实地,一步一步来,现在的社会让太多的人太浮躁了.
浮躁什么的我无法用语言表达,但我觉得,作为一个IT男,有一种离不开网络,并且十分习惯敲代码的情操是必不可少的 -v-
最近找工作,经常被问到30岁的问题(我刚过完27岁生日),很无语。
编程就像登山一样,越往上爬人越少。以这句话自勉!
其实, 这也是个社会问题. 因为中国的很多it公司找的是低成本的码代码的人, 并不注重自己的技术积累. 往往只看重产品产出, 但是不看重产品的进化, 维护. 急功近利, 非常浮躁. 所以才导致现在这个现象.
终身职业,毋庸置疑
我想请lz出示一下数据是从来里来的,以及调查范围,调查密度,由谁调查 好吗?
关于这个话题其实没必要争论些什么的,认为这一行吃青春饭的人也许在看了你的文章以后的5分钟内觉得说的有道理,但是请相信我,当他们睡一觉以后什么都变了,他们有太多的理由说服自己不相信你所说的一切。而对于能沉下心来做技术的人来说,无谓的诱惑不是他们放弃的理由,乐趣本身不在于那些外在的诱惑,而来自于对于探索的满足。
我倒是对那两个哥们做的做这个挖掘本身比较感兴趣。也许还有更有意思的结论有待数据挖掘的结果来说明。
国外牛B的IT公司的工程能力并不见得比国内的要强多少,但是国外那些NB的IT公司的架构和设计能力远远超过国内的公司,最可怕的是,那些有超强架构和设计能力的“老程序员们”还战斗在一线,这些战斗在一线的老鸟的能力绝对超过100个普能的新手。
–深有同感!
坚持不懈、不浮躁,这是一场持久战
作为研二计算机的学生,未来的准程序员,对30+后的规划,的确很迷茫
全归咎于国内计算机普遍的风气也不够理智,还是多看大牛的分享,思考自己的路吧
我刚好三十岁,这一年做了许多事情,通过这些事情,我更多的发现我处于程序员的起步,未来的路很长,得坚持走下去。编程只是自己的乐趣。我相信三十岁是起点,但是终点却是未知数。只能坚持自己,不被浮躁的社会所影响。
你要知道stackoverflow提供api拉取数据的,这些东西说实在的,我有空都可以统计下,实在不是啥难事,我觉得皓哥说的只是国外的情况,并不代表国内,国内的人到30就基本转领导岗位了,真正搞技术的几何?@扯淡
不是您这个年龄,也求交往! 哈哈哈哈 因为绝对认同您的观点! 所谓人云亦云 比如我深受其害的 早期的 一句程序员克星的一句话 “数学不好就不不要想着从事软件行业” 坑害了多少人的开发梦!
我现在还是一名计算机本科专业大二的学生,由于感觉在计算机方面没有什么天赋,并且在实际编程序过程中,感觉和同学间的差距越来越大,导致我越来越来消极,不知道应该从哪个地方着手了,对于未来都迷茫了…
做为一个86年的女程序,今年又面临怀孕,我对我今后的程序员生活相当怕;我还是很热爱开发,愿意单纯的只做些开发工作,可是。。。。
坚持下去吧!直到哪一天不能再坚持了·····
我也是啊,工作7年多了,最开始写了半年的php,后面写了2年的C++,后来又写java,python等,感觉学了很多技术,但是几乎没有学的精的,对技术有热情,但现在又老婆孩子,感觉精力有些跟不上了。
说的对,如果拼体力,30岁的程序员肯定和25岁的没法比。
所以我们不能拼体力,要拼脑力。。。加油。。对自己说加油。
虽然我最近很不顺,又再开始找工作,但是我希望2014我能找到一个懂我的公司,给我一个很大的舞台。。。
一直不觉得编程和年龄有关系,之前看过一片国外的文章,里面说了这样的话:别瞧不起那些上了年纪的程序员,很有可能,你在使用的框架就是他以前写的。。
@妮卡
数学对计算机是真心的重要
什么设计模式啥的都是浮云
只有数学才能最直接的解决问题
例如并行算法,网格运算,HASH算法等等
本人34岁,
热爱编程。
做过web开发
做过网络协议
做过文件系统
会 c/c++、perl、python、java、common lisp等语言
@vai
那复杂的算法也得有设计模式吧。
@spojus 如果把编程比作乐高积木的话,设计模式只是乐高积木的接口,定义各部分之间的组合方式,而算法则是定义了积木的形状、材质、强度等物理属性,不是同一个层面的概念
正是因为这个原因,很多应用软件不深挖用户需求、不求架构、不求设计,只求“完成任务”,最终结果只能是搞了一大堆软件,却没有几个是真正有用的。看起来企业搞了很多应用系统,覆盖了90%的业务范围,但当你想从系统中抽取有意义的数据的时候你才发现,似乎都有,又似乎都没有。
也不仅仅是软件行业,其他行业也有这个问题,根源是对“品质”的不够重视,当未来的中国更讲求食品的质量、更讲求日用品的质量、更讲求住房等等的质量的时候,软件也会有变化的。
大家一起慢慢前进吧,现在能做的就是呼吁并坚持。
最后再吐槽一点,天花乱坠的信息规划,若没有有效的设计实施,最终也只是水中月、镜中花,一场空。
年纪大技能不能跟上时代的老程序员很可能不上StackOverflow,而这个分析用的是StackOverflow上的数据,因此这个结论只是比较了(1)广大年轻程序员和(2)少数没被淘汰的程序员老手。
希望有后续paper分析一下年轻程序员如何成长为程序员老手或转行。
同道中人!求交往啊!求指教啊!
赞同楼主观点
37岁,依然热爱编程
很反感35岁的界限这个说法
国内软件才发展多少年
有图有真相,很鼓舞~
同龄, 同好, 同感, 同求交往
保存书签每周一看用于自勉
浩哥透露了年龄,解我一惑,今年也奔35啦,求与浩哥交往,呵呵
但是据说国内公司很多都这么干的,35岁以上就不要了。最近听说腾讯还是阿里也是这么干的
我今年36了,我想继续干下去,但是这个社会允许吗
我今年36了,我想继续干下去,但是这个社会允许吗,我30岁才开始转JAVA开发的.
所谓青春饭就是过了那年龄去跳槽时很难。其实LZ的观点个人很同意。但现象社会做到可能比较难,因为国内的企业对招程序员的能力标准与待遇很多公司根本不能平衡(就是fsfilove这位朋友说的观点,当然大公司还好点),所以这个现象就催使程序员转管理或是产品之类的职位。所以本人总结一点观点就是:很多时候理想与现实有很多区别~~~
后生跟进,努力让自己可畏(^_^)。
感觉我们要学真正的技术,只在语言上瞎费劲儿难免有一天会厌倦编程,因为他们没有一个追求技术高峰的心。
我也想进外企,需要达到什么标准吗?请大哥指教@Steven
@妮卡
深深地共鸣一下,不是这句话,这12年里我会活得更快乐。
浮躁,还不是因为没钱
今年30了,之前干了5年半测试。难道我也跟您学,转开发吗?
@扯淡
图表和数据都在原文的pdf里详细记录着
@zhanxw
跟不上时代的人不分年龄大小,有老也有少。
让我坚定了目标!!!
原来如此,让我更加鉴定了要继续走下去的决心,谢谢皓哥!