编程能力与编程年龄

编程能力与编程年龄

程序员这个职业究竟可以干多少年,在中国这片神奇的土地上,很多人都说只能干到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 ,请勿用于任何商业用途)

好烂啊有点差凑合看看还不错很精彩 (213 人打了分,平均分: 4.77 )
Loading...

编程能力与编程年龄》的相关评论

  1. 学过的东西:
    BASIC, Fortran, Pascal, Ada, COBOL, C, 8086 ASM, 8051 ASM,
    dBase III, FoxBase, FoxPro,
    DOS, UNIX,
    LabView,
    Edlin, debug, WordStar, sidekick, PCTools,
    Digger, Load Runner,
    ……

  2. 大哥(请允许我这么称呼),你好.
    您谈论的问题,估计是几乎所有的程序员都想过的问题,而且我也经常听说:在国外,搞技术可以搞一辈子,老了也可以,但是在天朝,似乎还没有这样的环境或者说氛围。经常听人说:招一个三四年经验的,甚至更少经验的就能干,为什么非得掏更多的钱去聘一个有好多年经验的,要钱也多,但是精力和体力都跟不上加班的呢?
    工作了三四年了,感觉就是在吃老本,虽然偶尔也看看新技术,而且学习新技术的能力也比原来强(必须的,不然白活了),但是总会莫名其妙的感觉到一些迷茫,不知道除了这个还能做什么。工作时间越长,好像越不好找工作……也许是自己太菜了……
    只是看到了您的这篇文字,随便聊聊,反正谁也不认识,嘿嘿,如有打扰,敬请谅解。
    欢迎指教,敬请赐教。

  3. 13岁开始编程,现年31岁的程序员表示对“编程编到30岁才刚刚入门“表示支持。其实感觉我们这里40岁的manager本身仍然有继续奋斗在一线的渴望,但是无奈各种杂事缠身,根本不可能有整块的时间投入思考和实践,时间一长就越拉越远了。而且随着年龄增长,长期加班和不健康的工作模式使得他们记忆力减退、身体变差,更加让他们的对技术的热情与日俱减,只能提一些不切实际的想法和玩概念了

  4. 耗子哥说的好!!!就是要抑制这种浮躁的心态 毕业两年 现在回头再学c DSA 才知道自己解决问题的能力是多么菜 羞愧啊 继续学习 另外浩哥 清华现在开了DSA的MOOC课程 老师讲的非常好 其实大多数从事一线业务开发的PG算法能力都不是很强 甚至说根本没有系统的学习过 我把网址放这 https://www.xuetangx.com/ 大伙看到了 也一起学习吧 老师讲的真心不错 而且每个礼拜都有作业 还有在线的代码评测平台 对自己的提高很大

  5. 同样喜欢编程,自己开发的的产品能得到用户的认可,非常自豪。目标是一直编程

  6. 陈老师这篇文章对中国IT业意义重大,甚至超越了某个行业,可以成为所有国人做人做事的重要参考,赞一个。

  7. 偶算一个吧!在一家小外企写代码至今~老外一直不理解中国的高跳槽率;说一直在给你们涨薪啊,在欧洲好几年都不涨工资了,除非你的职位发生重大变化~他们的发展已经及其稳定了,生活也超级的安逸,所以还是在技术日新月异的it领域;老外们还引导的技术的前进方向,这是他变成生活的一部分,而不止是谋生的手段;这样写的代码才具有艺术性;生命周期才会越长久;试问,现在我们周边的it人,有多少是甘心写代码的呢?为一口饭,还是为了更好的职位而做个台阶?看看那些发明新技术的老外吧~百分之八九十都是老同志,所以我想说,写代码对于老同志是相当适合的~还防老年痴呆,呵呵:)继续努力吧,同志们~

  8. 窃以为所谓编程入门,即是指主动写代码解决自己遇到的问题
    如:每天用Ctrl + C 、Ctrl + V比较频繁,能不能简单点呢?写点代码把F1映射为Ctrl + C,F2映射为Ctrl + V,一可为小指延年益寿,二可提交效率

    ps:图是用ggplot2画的

  9. 还是很赞同的,目前我们team正在招人,看到工作年限超过10年,还在写代码的人凤毛麟角,挺可惜的。

  10. 我今年32岁,依然还在编程。一方面是公司不够大,没那么多的title让人升,另外一方面也是我更加喜欢跟bug做斗争,跟程序较劲的关系。
    老实说,现在我的精力已经没办法跟当初新入行那会儿比了。基本上每天最多到八九点就感觉精神已经涣散,没办法再继续了。但是从效率来说,我觉得我反倒是比以前更加进步。首先,就是我出错的地方比以前要少的多。以前都是先蒙着写,写完不对再试着改。现在是先实验,做一个个小实验,验证了自己的想法,再去写一个个的模块儿。其次就是我的进度把握比以前要好的多。以前不管再宽松的进度。心里总是没有底,因为不知道前面会遇到什么坑,不知道会被坑难倒多久。现在基本上能看到的坑都知道怎么填了,前期的几个验证只要ok。那么后期的coding基本上不会遇上太大的问题。
    就我个人看来,现在的中国为什么依然存在很多30岁不行的说法,其实最主要的道理来说,是因为现在的很多的公司接的活依然层次不高,一个好的程序员与新人在某些工作上是没办法看出太大的差距的。举个例子来说,我刚接了一个关于wordpress的改修的活,初期因为公司没人懂这个,所以我要一点点验证,一点点写共通逻辑。但是一旦我把这些基础的东西完成,再后来的人基本上可以只调用我的共通就可以新建自定义的页面以及功能了。那么在接下去的工作中,我与新人基本上不存在太大的差距,唯一的巨大差距反而是在公司付给我和他的薪水的差别上。如果公司真能指着这个wordpress活下去的话,那么为什么还要我而不是用哪个新人呢?
    相反,如果公司一直在接不同的项目,用着不同的技术,那么我必然是比新人更好的选择。关键是这样的公司有多少呢?

  11. 一直很热爱于编程, 毕业三年了,干了3年的软件测试, 平时也一直学习跟巩固自己的编程能力。 没有实践进步很慢。 最近看了博主的文章如何学习C语言, 重新回到基础开始学习。 学习之路很漫长,加油努力。

  12. 许多人总是习惯接受流行的观点,总是希望得到权威的回答,而不知道通过自己的观察和思索得出结论。

  13. @29岁的程序员
    其实不能说公司不喜欢这类不能加班的员工,而是在国内,到了这个年龄的大众,能力没办法跟同等级的外国人比,跟底下的人技术也高得太离谱。所以普遍来说,这个年龄的成本高于相对年龄低,又能加班的。(大部分公司只会考虑成本问题,所以你既然要考虑职业的就职问题,那就不要站在程序员的角度考虑,这篇文章主要是想表达,程序员单纯喜欢程序能做到什么时候。)(现在在国内,普遍大众做事情都不单纯,所以各种分心出来的结果是都差不多,所以程序员30岁能被认可下来的,也就很少了。)(个人看法,没数据统计)

  14. @29岁的程序员
    这套说法的原因主要还是工作内容决定的。国内大多数的岗位都是体力密集型的,技术含量很低。因此才需要低水平高体力的技术人员。如果你能做到博主这个水平,你就会发现另一片天地了。

  15. 我觉得国内很多公司确实是让程序员去卖命的, 需要在一个让你可以高效的环境, 不以加班来评价员工的绩效, 这个很重要.
    多做一些有挑战(对自己)的工作, 少做重复的事情, 这样可以让我们一直拥有一颗年轻的心.
    大家都要保重身体啊, 这样才能在第一线奋斗到60岁. 我现在还很年轻, 慢慢成长, 慢慢来, 不能太浮躁, 也不能太懒散.

  16. 说的很对啊,我从事互联网10年,前些年基于网络建设,和工程建设与运维有联系,近2年才刚刚算式转型,做起了网站相关的业务,发现很多使不上劲的地方,网站建设牵扯到程序开发、数据库、操作系统和服务器等,技术现在发展这么快,我也不想掉队,边学边干,很多人说我过了年龄段了,但是目前公司有没有高技术人才,不学还是不懂啊。你这篇文章又再次激励了我,非常感谢,我现在想学习html5和Linux相关,请您给我点建议。

  17. 哈哈,耗子哥说的这些都能理解
    我虽然是一个前端,但是也慢慢的需要开始看元数据,javascript引擎方面的源码了,我知道自己应该从哪提升

    不过说句实话,中国对技术人才并不友好
    中国人可以说是做的世界上很苦的技术工作,拿着不算很高的薪水,在别人所谓的产品经理,所谓的“敏捷”项目经理女人都换了几轮的情况下,我们这些编码还在抱着键盘

    我跟同事提起我的想法,我都打算过几年去卖水果,他们都觉得很可惜,因为基本上我是带着我现在这个小小的前端小组去学习,去挑战新东西,他们觉得我这种创造力和毅力不应该离开这个行业

    但是生活很累,由不得你为了兴趣工作,我想这也是大多数同行的想法

  18. @刘孟浩
    哈哈,碰巧看到你想学HTML5
    给你点建议,大家纯属交流

    可以考虑在网上找一个案例,然后看看具体的实现方式,其实很多很炫的效果只要你构思的巧妙,都可以用CSS3实现,CSS3其实和CSS1,2一样,只不过集成了更多的特性,还是一个轻量级的标记语言

    然后多逛逛W3C,不要看国内所谓的教程,那个没用,只有W3C上面的东西才是最全的

    如果你想更深入,数学方面的必不可少,因为涉及到图像那就是算法了。。

  19. 这篇文章谈的是编程能力与年龄的问题,现在的年轻人浮躁是由大环境决定的,既然大多数年轻人都是这样的,那么问题其实并非出在他们身上,刚出生的婴儿是没有罪的,我个人觉得核心问题在于国内现在的技术环境让年轻人看不到希望,即使他们很努力的创造了价值,但后来发现他们的努力只是为了成就别人,一般都会选择要换个方向,要知道现在的年轻人压力也不小,说个比较现实的,大部分程序员是买不起房和车的,而且国内有大部分企业都是manager比技工的工资要高,虽然title是虚,但钱多,除非有程序员钱多的足够去发展自己的编程乐趣,否则都会想着要转manager。

  20. @29岁的程序员
    很多工作,你招3年经验的人,招十多个不如一个40岁的人,会干活。 这就是差距。
    至于你的情况,推荐你跳槽,找到真正卓越的Team。

  21. 浮躁的原因是,这个社会对于一个人的价值认可,只是以他拥有的金钱为标准,而不是一个人的工作能力或者道德情操。所以大家都急于“成功”(所谓成功就是占有大量金钱)。
    一个人如果到了30岁都不能暴富,就基本失去了承担风险的能力,就少了很多投机的机会,所以就不太可能“成功”了,大家看的就是把写程序当成一种投机的渠道,而非真正的专业。
    当年社会流行“拿手术刀的不如拿杀猪刀”的,现在流行的是:不管你拿什么刀,兜里有钱才是最成功的,哪怕你拿的是杀人的屠刀。

  22. 本人正在开始经历这个转型阶段,痛苦中。从02年开始做C++编程,开始在产品领域做开发,后来以底层技术研究为主,和楼主有点像。到今年34岁,尝试着转型做管理,目前在一家非IT公司做信息化管理。感觉现在的工作很不适应,事情太杂,没有人一起快乐地讨论IT技术,管理的东西也不懂,不知道如何入手。最主要是感觉之前11年追求的东西,现在开始慢慢远去,感觉自己的路是不是走错了。现在非常怀念以前的编程时光,不知道该不该转回去,或者说还能不能转回去。

  23. icejoywoo :
    我觉得国内很多公司确实是让程序员去卖命的, 需要在一个让你可以高效的环境, 不以加班来评价员工的绩效, 这个很重要.
    多做一些有挑战(对自己)的工作, 少做重复的事情, 这样可以让我们一直拥有一颗年轻的心.
    大家都要保重身体啊, 这样才能在第一线奋斗到60岁. 我现在还很年轻, 慢慢成长, 慢慢来, 不能太浮躁, 也不能太懒散.

    说的好啊,感觉是国内的坏境,导致了国内的程序员的平均工龄段。
    都是劳动密集型的工作,很少有创新的工作,还是以加班来衡量员工。

  24. 国内的软件公司多半都是有活干活,没活闲着,很少有自己的积淀,关键是没有自己的产品。如果有自己的产品,一轮轮更新换代,那绝对老程序员更合适阿。

    29岁的程序员 :
    大哥(请允许我这么称呼),你好.
    您谈论的问题,估计是几乎所有的程序员都想过的问题,而且我也经常听说:在国外,搞技术可以搞一辈子,老了也可以,但是在天朝,似乎还没有这样的环境或者说氛围。经常听人说:招一个三四年经验的,甚至更少经验的就能干,为什么非得掏更多的钱去聘一个有好多年经验的,要钱也多,但是精力和体力都跟不上加班的呢?
    工作了三四年了,感觉就是在吃老本,虽然偶尔也看看新技术,而且学习新技术的能力也比原来强(必须的,不然白活了),但是总会莫名其妙的感觉到一些迷茫,不知道除了这个还能做什么。工作时间越长,好像越不好找工作……也许是自己太菜了……
    只是看到了您的这篇文字,随便聊聊,反正谁也不认识,嘿嘿,如有打扰,敬请谅解。
    欢迎指教,敬请赐教。

  25. 赞同耗子的观点,程序员当然应该活到老学到老,但对于论文我想唱个反调。
    论文的结论是:
    1)程序员技术能力上升是“可以”到50岁或60岁的。
    2)“老程序员”在获取新技术上的能力并不比年轻的程序员差。

    这两句其实是废话,就好比说:
    1)人是“可以”活到110岁或者120岁的。
    2)(飞行员出生的)中年人在身体素质上并不比年轻人差。

    想想看,stackoverflow上的老程序员都是被岁月筛选下来的精英。论文没有说明具体的淘汰率是多少,进而从侧面佐证这个行业是否青春饭;而是最后强调了精英阶层的情况(个案)作为结论,显然有失公允。

    最后,我想说的是,如果你自认为精英,写到老当然没问题。如果不是,请在29-40岁之间,随时做好“前浪死在沙滩上”的心理准备。

  26. 我今年30岁,一直冲在编程第一线,负责框架的设计,填程序中的坑。
    新来的员工都不理解一程序的结构为什么要那样设计,这就是新手与熟手的区别。
    经验丰富的人对程序架构的规律把握的更好一些。
    程序小的时候,架构不重要,一旦程序的规模变大了后,增加新功能变得越来越困难时,才彰显架构的重要性。

  27. 老爷们一个,编程是个有趣的事情,从不计较关于程序员年龄的评论,最后几句,很赞。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注