编程能力与编程年龄
程序员这个职业究竟可以干多少年,在中国这片神奇的土地上,很多人都说只能干到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都是虚的,公司没了什么都没了,只有技术才是硬通货。而且,越是这个年纪还在玩编程玩技术的人,其实其经验和能力都是比较强的,都是中坚力量,如果还有其它这个年纪和我一样的人,求交往。
(全文完)
(转载本站文章请注明作者和出处 宝酷 – sou-ip ,请勿用于任何商业用途)
《编程能力与编程年龄》的相关评论
每次我都无法回答职业规划这个问题。
如果一个人早已决定在一条路上一直走下去,你问他该怎么走,走的计划是什么,我觉得也是问不到答案的。
“要一直不停走下去”所以我只能这么回答。
20多的时候随着技术的提升越发的觉得自己什么都能做.都说30而立,反而在开发一途到了30才发现20多岁是想法的可笑,越发的感觉自己的无知,越发的渴望知识.码农,工程师,程序员是三个不同的人群.只有真正享受编码的人,才是程序员.
家父已经编程到58岁的程序猿飘过
这篇文章超喜欢, 我虽然工作没几年, 但我很喜欢这一行, 周围的大多数的同事都说以后转行的问题, 我每次听到, 感觉很没意思, 感觉都是像混日子的, 这个行业可能薪水能稍高一点, 年轻的时候累一点, 混日子, 以后转行干点别的, 可能这就是这些人的”追求”吧.
正太分布
这是我老师的站,大家可以看一下。风格很“旧”,这是以为60位还坚持编程的高校教授,现在正在做嵌入式OS,他说不打算开源,在中国开源难。http://qu99.net/web/program/prg.htm
网站没了
上面打了几个错别字,。。。一位60岁。。。
我想回应你的交往,可是我年龄还没达到那个要求~我觉得我也可以做到五十岁甚至更晚~
我喜欢通过自己制作东西来解决问题的过程~
但是我不喜欢别人把我当成权威,那样可能会因为我的错误判断而给别人造成损失。大多数人的状况是随着年龄增长,犯过错误的增加,人会下意识的更加倾向于保守,因为这样可以维护所谓的“面子”,还可以继续做所谓的“权威”
要想打破这个,就必须有好的心态,虚心接受任何年轻人的挑战。
我快35了,1线开发。也曾经拿着好看的title,最后发现没啥意义。创造就是最大的消遣,编码就是最好的娱乐
相当正能量的一篇文章,希望能改善一些人的观念
这个必须得定,我感觉除了心态保持年轻外,身体才是最重要的,所以别忘了锻炼身体
我们公司数控事业部负责人,83年大学毕业,至今30年操作系统,C/C++编程经验,现仍工作在一线。当时中国数控计算机行业从零起步,从国外进口机器读出机器码,翻译成汇编–>C语言(反汇编做起),中国计算机起步较晚,国外30年以上编程经验的人也有很多,所以我们80,90后,一定要静下心,打牢自己的基础,慢慢弥补这些差距,计算机这个行业才是活到老学到老的。
写错了,21天不是21年吧
好文章,@mark
赞一个,不是一样的年龄段的也可以交往吧!
完全赞同楼主的观点,编程跟实际年龄没太大关系。用你们老厂长的话说,真正起决定作用的是‘你是否真正好这一口’;其实不止程序员,这一点适用于任何人任何行业。
从狭义一点的技术层面来讲,编程经验跟代码阅读/理解能力&debug能力成正比。架构方面不谈了,但同样的功能善于思考且经验丰富的人往往实现起来只需要更少的代码。
努力提升自己
Zan,40岁老程序员求交往
POSITIVE POWER!
更上一层次的,我更钦佩那些工作在开源社区的大神,以他们的技术去商业公司绝对捞钱,但是他们选择为开源奉献,靠基金会和社会捐助过日子,纯粹的理想主义。
20多岁的程序员求交往
我现在26,技术水平真是一般,我也整天想这,想那,挣不到钱,没有晋升空间,很多事实摆在面前,可是我不甘心做一个只用手,按别人布置好的架子去敲代码,这年头不缺码农,确的是有想法,有脑子的程序员。
我35岁,编码到今年整好10年,非常赞同楼主的观点,也有楼主文中提及的种种遭遇,也有各种各样的无奈。
但是,于我看来,您所有理有据提到的,只是技术人员的一厢情愿的乌托邦式理想;在当下,有谁能逃离社会环境的影响,生存压力甚于生活压力,让太多的有能力的无能力的都琢磨着这样那样的短线行为,因为整个社会的氛围就是浮躁的社会氛围。
如今我这个年纪出去换工作,就是一种高不成低不就的状态,高了,企业认为一个程序员不值这个价,低了自己还得养家糊口;所谓的“十年之痒”,我觉得就是TMD这个意思。
叔,有错别字哦,“只有技术太是硬通货”,嘿嘿
打算在技术这条路上一直走下去
我同意作者的观点,title什么的都是虚的,但是我也觉得程序员不应该成为弱势群体,所以应该争取一些title,主要精力还是应该研究技术,“科技是第一生产力”
一线的朋友。有女朋友吗
亮了哈哈 逗
等我到了耗子叔这个年纪,我来和你交往!
赞!
主要我觉得还是中国社会官本位思想,都想着老了有资历要做管理,做管理就变成领导了。都以为技术领域岗位上就没有职业上升空间了。
正能量!
其实全文要点就是最后三个字吧!
转行的要转行的本身就只是把编程当成谋生的手段。说到底就是想要什么样的生活而已。当然编程也是我的谋生方式之一。爱编程爱运动喜欢简单
保重身体,保持好奇,坚持自己的原则。
当然,如果确实不适合做这行,尽早抽身,去找自己喜欢的工作。
哈哈,找到大龄程序员的基地啦
哈哈哈哈哈 这小伙 你没怎么看过皓叔的文章吧。人家没写错@徐风子
希望这篇文章能被更多的用人单位和年轻程序媛看到。
从mean和sd值的差异上看,young和old是有各自的技术侧重和内部差异的。
awesome!
理想与现实是脱节的,爱好编码,爱好创造,但也需要生存啊!
test。。先试试能不能发出去。
我今年刚刚30岁,确实经过这几年我也才刚刚感觉上了点道开了点窍,刚刚能看到后面那一座座需要翻越的山峰
严重同意,求交往。
给我们这些刚入行的新人上了一课。
说的太好了 +1
其实此次我发这条评论,也是想像陈老师讨教一个问题,可能我的话题与文章略有不同的范畴。
一、关于工作细节问题。我也是码农一只,从业三年有余,敬业,对编码本身感兴趣。但是我的能力真的是很庸啊。甚至不能顾及一个模块中全部的结构,修改一个细节都不记得全局测试一下。这三年来,大多做维护工作,较少开发完整模块。近期突然产生了厌烦情绪,因为这些年,我没见过一个容易维护的模块,100%都是逻辑混乱、编码混乱、漏洞百出的模块,突然觉得失去了兴趣。近两年来曾修好过数个烂模块。但是没有成就感,最多就是在一堆废墟上搭个稍平点的台子临时应付一下,过两年还要被毁掉的。大家都不赞同把模块做好,能把眼前的功能应付过去就行,领导也这么看,不关心细节。所以我们的软件质量差是根深蒂固的,我一个人能做什么呢!其实我也想能发挥全力从事开发工作,做好设计工作,但是也许能力不够,没有什么机会。
二、关于前程问题。近期我身边发生一件事,是能力遇上了权力。细节不便透露,就是一个有能力的人被一个有权力的人给X掉了,二者并无直接关系,是组织结构缘故。不知道陈老师可否在这方面给予指点。这件事让我觉得在江湖上技术比不过权力。当然,个人并不倾向权力在X人这方面的威力。
三、今年以来,不晓得哪根筋错了,觉得做技术不如做管理能服务于更多的人。当然技术发挥得当,可以给社会大众带来了不起的进步和发展。但是有多少技术真正能做到服务大众的结果呢,绝大部分在勾心斗角、尔虞我诈、唯利是图的层层围堵之下灰飞烟灭了吧。更有甚者,因为领导的心术不正,技术被用在了对社会有危害的黑暗领域。近期总是在想,如果能做管理,是不是可以更大限度的对社会释放正能量,哪怕是在极小的范围内。而技术是中性的,结果如何,依赖使用方式。
励志
29岁,曾有幸见过你本人,并听过你的讲座,管理也要懂技术,这句话对我帮助很大,谢谢。
好吧,跟你交往.
@一叶菩提
一。 有时候你所在的环境实在不是一块好土壤,那你真的需要换一个环境。并不是所有的地方都会让你维护烂模块的。可以考虑换个环境。
二。 从斗争的角度讲,技术比不上权力那是必然的。不然还叫什么权力。 这个事情不需要有所不平。 那个有能力的人被x掉算不了什么大事。换个环境继续开心的工作就是了。 工作多年肯定也认识许多技术朋友,到哪去不好?倒是这个有权的,喜欢斗争的人,失去这个职位后,不敢说变得什么也不是了吧,至少不像有能力的人那样。
三。 做技术还是管理都好。关键看你适合做哪个,想做哪个,和能做好哪个。 喜欢管事,且能承担压力,有领导力和凝聚力那就去做管理。 不喜欢管杂事喜欢研究技术就走技术路线。
共勉。
大叔求交往!