最近一个基于 Stack Overflow 数据的研究尝试去解答以下问题:编程知识是否与年龄有关,程序员是否越老就越博学以及他们是否能够掌握新的知识技能等。
美国北卡罗来纳州立大学计算机科学系的博士生 Patrick Morrison 和助理教授 Emerson Murphy-Hill 最近发布了《编程知识是否和年龄有关?Stack Overflow 探秘》(PDF),研究了编程知识和年龄之间的关系。
这项研究的对象是 Stack Overflow 的用户数据库(2013 年 2 月),包含 1 694 981 名程序员,平均年龄为 30.3 岁。在这些用户中,超过 300 000 名用户明确提供了具体年龄,这些数据均用于本项研究。在该用户群中,作者筛选出曾在 2012 年回答过问题并且其威望值在 1 到 1 000 000 之间的用户,总样本数为 84 284 个,平均年龄为 29.02 岁。作者认为,在该调查中回答问题比提问更具代表性,因为“很可能问一个好问题却无法回答,但不大可能有难以理解或错误的答案获得高分”,并且“回答编程问题的能力在程序员面试中更重要。”
作者在其调查中着重提出了三个问题,主要是关于编程知识方面,而不是编程能力方面:
年龄对编程知识起到积极作用吗?
在该调查中,编程知识是用 Stack Overflow(SO) 的威望值来衡量的,结果显示年龄在 10 到 50 岁之间,威望值大致呈线性增长,意味着“年龄和 SO 威望值间正相关”,如下图所示:
程序员越老其技术和技能就越多样化?
作者通过选用 Stack Overflow 标签的方式,来衡量调查对象的知识领域,比如 Java、C#、Javascript、C 等。结果数据(如下图)显示“平均每个程序员所拥有的标签数量随着年龄增长都会有所下降,在 30 岁左右触底,然后在 40 到 50 岁之间反弹,而在 60 岁左右呈分散状。”这么来看,程序员越老似乎就拥有越多的技能集。
大龄程序员学习新的技术能达到什么程度?
为了衡量大龄程序员是否依然能掌握新的知识,作者将调查对象的标签限定在一些新的技术——clojure、 django、 git、 ios、 jquery、 linq、 mongodb、ruby-on-rails、 silverlight 和 windows-phone-7-,并结合答案的分数:
我们推测,他们在新技术领域获取的知识,可以通过答案的分数来衡量。每个答案的分数基于支持和反对的数量。如果越老程序员学习越新的技术,我们期望跟他们在回答这些技术的问题时,能够获得和年轻程序员一样甚至更高的分数。
结果数据在下表中列出:
作者总结道:
“iOS”和“windows-phone-7”这两个标签,显著偏离了统计学中的零假设。这可能表明即使技术的年代久远,但其知识依然有用武之地,比如“iOS”以 20 年历史的 Objective-C 为基础,就给大龄程序员带来了优势。年龄和所选新技术之间的关联性相对较弱,我们还没有强有力的证据证明大龄程序员无法掌握新技术。这样看来,大龄程序员的确能掌握新的技术。
作者承认,Stack Overflow 可能不是最好的样本去衡量编程知识和年龄的关系,因为“美国对程序员就业的调查数据显示,与 SO 的用户分布相比,专业程序员的年龄分布倾向大龄化”,并且“也许是年轻的程序员把加入【SO】看作理所当然的事,而大龄程序员如果知道自己在某方面特别在行也会加入 SO。”他们也“不确信 RQ3【第三个研究问题】所采取的调查手段是公平的,但是我们到目前为止也没有找到更好的方法。”
查看英文原文: Are Older Programmers More Knowledgeable?
感谢康锦龙对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论