普通程序员和神级程序员的区别?
或许从大神们的工作状态中,能找到一些蛛丝马迹。
有位名叫Ivan Bessarabov (简称“伊万”) 的好事者,刚刚统计了各路大佬的代码提交 (git commit) 时间分布。
包括Linux之父,Python之父,Go语言的作者……
伊万考虑了时区,并把多人合作提交的代码踢出去没算。
结果很有意思,发现了几个不同的物种:正常人类,夜行兽,还有……永动机。
这引起了网友的热烈讨论,Hacker News热度已经超过600点:
正常人类
正常人类通常在白天工作。
然而在程序员大佬中,这个物种并不常见。
Go语言的作者Rob Pike看上去算是个非常正常的人类:
(第一列是时间,第二列是代码行数。)
Go项目的repo显示,Rob的工作时间集中在上午9点到下午5点之间,朝九晚五,非常健康。
虽然一天可能就睡5个小时,业余时间似乎也都在coding吧,但总之,组织鉴定他是个正常人类!
下面这位“正常人类”,画风就开始有点不一样了:
这来自Linux之父Linus Torvalds:
白天工作,没问题。但是这位大神的代码从早上7点就开始有喷发之势,这个劲头几乎能持续到晚上八九点钟。
睡眠时间比上面那一位看上去更短了一些,不算上发呆时间的话。
这简直是正常人类里的战斗机。
而根据网友爆料,Linus可能是被迫成为正常人类的,在他有孩子之前,他也是昼伏夜出的夜行生物。
还有的人的画风是这样的:
这是FFmpeg的作者Fabrice Bellard在这个项目上的工作时间,真是越夜越开心啊。
令人好奇的是,这位大佬是会睡着睡着觉灵感突发蹦起来提交代码的吗……
夜行兽
说不上什么科学道理,但程序员大佬的身体构造可能发生了什么诡秘变异。
他们中间夜行生物的比例似乎要高于正常人类。
比如像这样:
这是LiveJournal的作者Brad Fitzpatrick在memcached项目上的提交。
大佬疯狂熬了一宿,灵感喷涌而出,太阳当空照的时候,他就满意地去睡觉了。
Brad对Go语言也有代码贡献,在这个项目上他的画风更加狂野了:
LLVM编译器的作者Chris Lattner也是当之无愧的夜行兽,他曾在苹果和特斯拉工作,现在则加入了谷歌。
他的代码提交时间长这样:
别人都是朝九晚五,这位大概是晚九朝五吧……
研究了那么多大佬,伊万小哥自然不会放过那位仁慈的独裁者。Python之父Guido van Rossum同样被戳上了夜行兽认证。
这样的代码提交时间似乎在说:美好的一天从下午开始,夜晚才是真正的coding time
至于夜行兽们为什么24小时都在提交代码,大概他们像猫一样白天也想醒就醒吧……
永动机
除了日行和夜行,还有一个物种叫白夜行,他们不止24小时提交代码,且产能没有重大波动。
“世界上最好的语言”PHP的创始人Rasmus Lerdorf,便是一个优秀的代表。
由于GitHub上找不到初版PHP,伊万便统计了这位创始人在php-src项目上的提交时间:
看得出,越到晚上越是兴奋,但白天体能也并没有太多损耗。
不过这个物种里,还有产能更加强盛的个体。
下图是两个Web框架,和它们的作者,名叫Sebastian Riedel。
△ 都是基于Perl语言的框架
这是他在Mojolicious框架项目里的提交时间表,数字快要爆炸了:
高产的时段,依然集中在夜晚。
但即便是产能最低的早上8点和9点区间,也都超过了100行。
伊万统计到这里,都不由地惊叹:
这时间表是疯了。好嫉妒他的生产力。
这样看来,每个物种都有各自的战斗机。
强大的战斗力难分高下。
谁喜欢周末写代码?
伊万的观察结果,被著名夜行者之一、LLVM编译器的作者Lattner翻了牌。
他提了个建议,说如果把工作日和周末分成两个数据集来分析的话,可能会很有趣。
于是,伊万就真的续了一篇。
因为有五个工作日,两个休息日。如果每日产能平均分配,应该是周中71.4%,周末28.6%。
那么,周末提交的比例超过28.6%的话,就表示更喜欢在周末写代码。反之,就是更倾向在工作日写代码。
结果,日行族的Linux之父Linus (19.3%) 和Go语言之父Pike (9.7%) ,都是工作日产能的更加丰厚。
可以理解,毕竟日出而作,日落而息,周中忙碌,周末休息,都是普通人眼里的自然规律。
夜行族便不同了,既有喜欢工作日的Python之父van Rossum (10.2%) ,也有喜欢周末提交代码的LLVM编译器作者Lattner (27.3%) 。
永动机又如何呢?
PHP创始人Lerdorf,是所有被测的著名程序员里,周末提交比例最高的,达到了30.3%。
而永动机中的战斗机、两个Web框架的作者Riedel,周末提交比例是26.2%。只是略低于26.8%。
总体来看,永动机可能是最喜欢周末上班的一个物种。
质疑之声
那么问题来了。Hacker News讨论版上,不到一天便涌来了187条评论,提出问题的也不少。
比如,顶楼是名叫Dahart的网友,他说不能轻易把提交时间等同与工作时间:
我都让团队尽量避免在夜里、周末、或者快到的时候提交代码,因为后面还有其他工作人员,需要这些代码。至少有15年都是这样过来的。
除此之外,推特网友@JDevlieghere还说,提交时间和git的机制有关系:
我自己跑了一下LLVM,然后发现代码提交时间,延迟了几个小时。
LLVM作者Lattner也附议了这个问题。
不过依然不可否认,代码提交时间是个非常好的观察角度。
<meta charset="utf-8">
One More Thing
独乐乐不如众乐乐,伊万小哥开源了代码,热情邀请大家一起探秘大佬都是什么物种。
所以现在你可以亲自解密一下国内大佬coding time了。
比如,听说广州程序员张小龙就喜欢深夜抽烟写代码,伴着音乐享受夜的温柔,不知道现在是否还这样……
普通程序员和神级程序员的区别?相关推荐
- 怎么用python制作简单的程序-神级程序员教你如何用python制作一个牛逼的外挂!...
玩过电脑游戏的同学对于外挂肯定不陌生,但是你在用外挂的时候有没有想过如何做一个外挂呢?(当然用外挂不是那么道义哈,呵呵),那我们就来看一下如何用python来制作一个外挂.... 我打开了4399小游 ...
- 《千字文细谈》2021神级程序员都在用什么工具?-09-02
答者:如下图 普通码农一枚,分享一下自己最常使用的几个效率生产工具. 目前还没看到神级程序员的回答,问题先码一下,坐等神级程序员. 下面本人抛砖引玉的回答: 1.关于架构设计和系统设计:会推荐几个自 ...
- 世界神级程序员之一,成了被人唾骂的神棍?
本文转载自 差评 前几天, Richard M.Stallman(查理德 · 斯特曼)在视频中宣布,自己将要回到 35 年前一手创立的 FSF(自由软件基金会),并且希望再次领导 FSF . 在技术圈 ...
- 神级程序员都用什么工具?2020 年度开发工具 Top 100
[CSDN 编者按]在过去的 2020 年,诞生了哪些新的开发工具?最优秀的开发工具和开发服务是什么?神级程序员们是怎么使用它们来开发顶尖的软件和服务? 作者 | StackShare Team ...
- 神级程序员8000行css代码画出一个蒙娜丽莎,堪比达芬奇!
代码画出的蒙娜丽莎 今天逛CODEPEN找HTML5动画案例的时候,偶尔看到一位神级大师的作品,用纯CSS代码画出一副蒙娜丽莎,虽然分辨率不高,但是仍然让我很是震撼,一看代码,整整8000行,基本一行 ...
- python连接池框架_Python中的连接池是非常重要的!神级程序员详解!
概述 连接池的作用就是为了提高性能,将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对Server端进行访问.这样 省略了创建连接和销毁连接的过程(TCP连接建立时的三次握手和销毁 ...
- 知道经纬度用python画路线图_神级程序员教你用Python如何画一个中国地图!(好好玩)...
为什么是Python 先来聊聊为什么做数据分析一定要用 Python 或 R 语言.编程语言这么多种, Java , PHP 都很成熟,但是为什么在最近热火的数据分析领域,很多人选择用 Python ...
- 程序员python代码打招呼方式_某编程少年说他是Python大神,神级程序员不用一行代码教他做人!...
听君一席话,胜读十年书. 1.扎实的python基础 个人的技术基础知识是否扎实,决定了个人是否能够做的工作层次. 比如某些Python半吊子,只能够纸上谈兵,和Python小白谈谈人生理想,而只要涉 ...
- 12本大神级程序员必读书籍,从菜鸟走向牛逼!
很多人问我这个问题,尤其是那些刚开启软件工程生涯的同事和朋友.要成为一个更好的开发人员,我应该读哪些书?我真的需要读书吗?这是一个很值得探讨的问题,而且也是我在成为软件工程师之时问了很多导师的一个问题 ...
最新文章
- BLAST引物或靶点特异性
- 《Linux下sed命令的使用》
- Android studio | From Zero To One ——安装教程及前期学习总结
- linux 内核修改rss,linux 内核参数 rss
- Android使用GestureDetector实现手势滑动效果
- python题库选择填空_python练习题4.18猴子选大王
- 今晚课题:2019-3-20
- rmlv出错处理一例
- Cris 的 Scala 笔记整理(八):面向对象中级-封装
- 2021 年高教社杯全国大学生数学建模竞赛题目(A 题 “FAST”主动反射面的形状调节)
- wordpress中如何正确书写robots.txt
- OpenCV-图像处理(06、调整图像亮度与对比度)
- freeswitch+kamailio+unimrcp
- 计算机1946考试试题,统考计算机考试试题及答案
- php启动flashpaper,图解FlashPaper的使用方法
- 认识Power BI
- win10在电脑中添加新用户
- Word里表格跨页时自动断开,表格后留有空白部分,未布满整页,如何操作让表格上下页均匀布满?
- 【Java基本数据类型】Long和long的区别
- Java 火车票订票系统
热门文章
- event trigger php,微信小程序 this.triggerEvent()的具体使用
- 通过 HUMANS 项目,传达出空间适合所有人的信息
- 网站图标如何设置详细过程
- Codeforces 1634 A. Reverse and Concatenate —— 简单思维
- linux环境下blastn命令怎么用,Linux环境下通配符及特殊符号使用详解
- capabilities: ambient capabilities说明
- 【详细】小程序仿支付宝APP实现
- 树莓派内核编译(5)
- 微信小程序全局变量(globalData)和缓存(StorageSync)的区别和用法
- IDEA开发流程Activiti需要注意的一些坑