程序员究竟能干多少年?用数据说话!

简介: 程序员这个职业究竟可以干多少年,在中国这片神奇的土地上,很多人都说只能干到30岁,然后就需要转型。我在很多面试中,问到应聘者未来的规划都能听到好些应聘都说程序员是个青春饭。因为,大多数程序员都认为,编程这个事只能干到30岁,最多35岁吧。

程序员这个职业究竟可以干多少年,在中国这片神奇的土地上,很多人都说只能干到30岁,然后就需要转型。


我在很多面试中,问到应聘者未来的规划都能听到好些应聘都说程序员是个青春饭。因为,大多数程序员都认为,编程这个事只能干到30岁,最多35岁吧。


好多时候超级有想和他们争论的冲动,但后来想想算了,因为你无法帮助那些只想呆在井底思维封闭而且想走捷径速成的人。


今天,我们又来谈这个老话题,因为我看到一篇论文,但是也一定会有很多人都会找出各种理由来论证这篇论文的是错的,无所谓了,我把这篇文章送给那些和我一样准备为技术和编程执着和坚持的人。


论文


首先,我们先来看一篇论文《Is Programming Knowledge Related to Age?》(PDF链接:https://people.engr.ncsu.edu/ermurph3/papers/msr13.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岁左右)


image.png


能力和年龄分布图

然后,计算每个人每个月的Reputation,这样可以找到这个用户的真正的活跃时间,这样便于计算这个程序员的真实能力。(总声望 / 活跃时间),可以得到他平均每个月得来的Reputation。


我们来看看程序员的能力和年龄段的分布图:(你可能会大吃一惊)


image.png


上图中我们可以看到,程序员的能力在从25岁左右开始上升,一直到50岁后才会开始下降。所以说,程序员吃的不是青春饭。只有码农,靠蛮力,用体力而不是用脑力的程序员才是吃青春饭的人。


年纪大的人是否跟不上新技术

论文的作者分析了Tag,用了最近5年内比较流行的技术Tag,然后用了一套比较严谨的算法来查看那些所谓的“老程序员”是否在新技术上跟上不了,所谓跟不上,也就是这些老的程序员在回答这些新技术上并不活跃。所谓老,就是37岁以上的程序员。


得到了下表:可以看到,老程序员和年轻的程序员对于一些新技术的学习来说也是差不多的,甚至有些项还超过了年轻的程序员。


image.png


结论

论文的结论是:


1)程序员技术能力上升是可以到50岁或60岁的。


2)老程序员在获取新技术上的能力并不比年轻的程序员差。


我的一些感受


最后,我说一说我的一些感受:


这些年来的对于外企和国内感受—— 国外牛B的IT公司的工程能力并不见得比国内的要强多少,但是国外那些NB的IT公司的架构和设计能力远远超过国内的公司,最可怕的是,那些有超强架构和设计能力的“老程序员们”还战斗在一线,这些战斗在一线的老鸟的能力绝对超过100个普能的新手。


对年轻程序员的感受——国内新一代的程序员们太浮燥了。老**实说,对于大多数人来说,如果你没有编程到30岁,你还不能成为一个“合格”的程序员。所以,并不是编程编到30岁就玩完了,而是编程编到30岁才刚刚入门。**这些不合格的程序,整天BS这个不好,那个不好的,而且喜欢速成,好大喜功。


我是一个奔四的人了,编程就像登山一样,越往上爬人越少,所以,在我这个年纪还有想法,对编程还有热情的人不多了,基本上都是转Manager了。


其实,什么职位,Title都是虚的,公司没了什么都没了,只有技术才是硬通货。而且,越是这个年纪还在玩编程玩技术的人,其实其经验和能力都是比较强的,都是中坚力量,如果还有其它这个年纪和我一样的人,求交往。


相关文章
|
安全 Linux iOS开发
Anaconda下载及安装保姆级教程(详细图文)
Anaconda下载及安装保姆级教程(详细图文)
37314 1
Anaconda下载及安装保姆级教程(详细图文)
|
4月前
|
存储 缓存 NoSQL
我们来说一下 Redis 中 Zset 的底层实现
我是小假 期待与你的下一次相遇 ~
273 3
我们来说一下 Redis 中 Zset 的底层实现
|
2月前
|
Linux 开发工具 git
你的终端神器之Oh My Zsh
Oh My Zsh 是一款强大的 Zsh 配置框架,提供数百款插件(如自动补全、语法高亮)与精美主题,大幅提升终端颜值与效率。支持 Linux/macOS/WSL2,一键安装,轻松定制。开源免费,社区活跃!
598 2
配置了nrm之后如何让它在所有项目中生效?
配置了nrm之后如何让它在所有项目中生效?
367 121
|
8月前
|
SQL 存储 关系型数据库
MySQL内存引擎:Memory存储引擎的适用场景
MySQL Memory存储引擎将数据存储在内存中,提供极速读写性能,适用于会话存储、临时数据处理、高速缓存和实时统计等场景。但其数据在服务器重启后会丢失,不适合持久化存储、大容量数据及高并发写入场景。本文深入解析其特性、原理、适用场景与限制,并提供性能优化技巧及替代方案比较,助你合理利用这一“内存闪电”。
|
5月前
|
Java Linux Apache
Apache Maven 3.9.9 安装使用教程 7z 压缩包详细步骤
下载并解压 `apache-maven-3.9.9.7z`,将文件夹移至如 `D:\tools\maven` 目录。配置环境变量:Windows 添加 `bin` 路径到 `Path`,macOS/Linux 在 `.zshrc` 或 `.bash_profile` 中添加 `export PATH=...`。运行 `mvn -v` 验证安装。可选:修改 `conf/settings.xml` 指定本地仓库路径或添加阿里云镜像加速依赖下载。进入含 `pom.xml` 的项目目录,执行 `mvn clean install` 即可编译打包。
|
11月前
|
JavaScript 开发工具 开发者
鸿蒙开发:如何实现一个hvigor插件
需要说明的是,这两种方式的实现核心逻辑基本上是一致的,都是以ts文件编写Task任务方法,主要区别就是在插件复用机制上,如果单一项目,推荐基于hvigorfile脚本开发方式,如果是共享给他人使用,推荐使用基于typescript项目开发。
267 40
鸿蒙开发:如何实现一个hvigor插件
|
Ubuntu 网络安全 虚拟化
VMware虚拟机ping不通原因排查及分析
下面以 VMware 虚拟机为例进行介绍。
6708 3
|
存储 Java 数据安全/隐私保护
Java的文件管理系统都有什么?
Java的文件管理系统都有什么?
992 3
|
SQL Java Kotlin
MybatisPlus怎么拓展自定义BaseMapper
通过扩展Mybatis-Plus的`BaseMapper`,可以自定义SQL模板以满足特定业务需求。例如,当遇到唯一键冲突而不希望抛出异常时,可使用`INSERT IGNORE`语法。首先,创建`InsertIgnore`类继承`AbstractMethod`并定义`insertIgnore`方法及其SQL模板。接着,在自定义的`UltraBaseMapper`接口中声明`insertIgnore`方法,并让业务Mapper继承此接口。最后,通过`UltraSqlInjector`类将`InsertIgnore`方法注册到Mybatis-Plus插件中。
970 1

热门文章

最新文章