15

揭秘大牛程序员十二时辰:有人作息规律,有人全年无休-InfoQ

 4 years ago
source link: https://www.infoq.cn/article/DVU73tDo*T2Nk6QpEXN5
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

揭秘大牛程序员十二时辰:有人作息规律,有人全年无休

发布于:2019 年 7 月 20 日 14:54

揭秘大牛程序员十二时辰:有人作息规律,有人全年无休

作为一名程序员,你的效率什么时候最高?是一到公司就开启“狂飙模式”(小声 BB:也可能是“摸鱼模式”),还是披着夜色成为蝙蝠侠一样的“黑暗骑士”?在你奋力 coding 的过程中是否偶尔也会闪过这种想法:某个业内大佬此时此刻是不是也跟自己一样,正在为自己的项目倾尽全力?

一位名叫 Ivan Bessarabov 的小哥正是抱着这样的好奇心,对程序员大佬们进行了一番统计:他们的作息是什么样的?他们什么时段效率最高?他们也都是夜猫子吗?他们周末是不是也在疯狂 coding?今天,就让 Ivan 小哥来为你揭秘,欢迎和他一起走进程序员大佬们的“十二时辰”。

对于 Ivan Bessarabov 来说,有个问题一直困扰着他:那帮大牛程序员们都是几点工作的?很明显,程序员的成果就是代码,而代码存储在版本控制系统(VCS)当中。将代码存入 VCS 时的记录时间,就是破解这个谜题的线索。

目前最受欢迎的版本控制系统之一正是 git。在向其中存放代码时,首先得创建“commit”。下面来看 git commit 中包含的部分原始信息:

在这里可以看到提交信息(「Initial commit」)、存放文件结构(「tree 496d…」)的 ID 信息、commit 作者名称与邮件以及更有趣的内容——时间戳(1563188141) 以及时区信息(+0300)(每一条 git commit 都拥有「author」与「commiter」,二者一般完全一致)。

时间戳是指自 1970 年 1 月 1 日之后经过的秒数。如果将 1563188141 转换为日常使用的日期结构,则将得到 "2019-07-15 10:55:41"(UTC 时区)。接下来,将“03”小时与“00”分钟添加进去即得到 "2019-07-15 13:55:41"——也就是 commit 作者在进行提交操作时所看到的本地时间。

VCS 当中的一些重要代码往往来自多项 commit 与多位作者。因此,可以编写一个简单的程序来检查所有 commit,过滤其中单独某个人的提交操作、获取本地提交时间,并将结果显示为常用的时间格式。

于是,Ivan 对几个程序员大佬的 git 库进行了解析,对其中的个人 commit 进行过滤并创建出统计图表——包括此人每天工作多少个小时,以及在此期间完成了多少次提交(结果非常有趣),并将它发布在了自己的博客中

而他统计表中的一位大佬:Chris Lattner(LLVM 编译器与 Swift 编程语言的作者)非常友好地提出了一个改进的好主意:

如果你把同一人在周末与工作日的信息视为两个不同的数据集,并把结果加以比对,可能会得出非常有趣的结论。

说得对,Ivan 立刻开始了改造。这一次他把统计分成两份图表:左侧图表为工作日期间的提交记录,右侧图表则为周末期间的提交记录。(有时候周末也属于工作日,有时候工作日期间也有公共假期,但这里就不搞那么复杂啦:周一到周五在左侧,周六到周日在右侧。)左侧与右侧采用相同的显示比例。

在图表下方,列出了提交总数与百分比。由于工作日与周末分别为 5 天和 2 天,因此如果每天的提交数量相等,那么工作日的提交百分比应该是 71.4%,而周末则为 28.6%。所以,如果周末的百分比超过 28.6%,则证明此人在周末的工作量更多。而如果周末百分比低于 28.6%,则代表此人更倾向于在工作日干活。

这一次,Ivan 还在图表当中列出了截至目前 repo 中的 git commit hash,并着手编写图表生成命令。这样一来,相信大家能够更轻松地重现他进行的操作。

好了,下面就来看看程序员大佬们都是怎样的作息吧!

Linus Torvalds

Linus 是 Linux 操作系统的作者,同时也一手打造出 git VCS 以及相对知名度较低的 Subsurface(初级潜水员跟踪系统)等程序。

这里是他在 repo: https://github.com/torvalds/linux 当中各 commit 的发送时间。

Linus 的工作习惯还是比较正常的,大多数提交操作在 10 点时间,而且从来不会在深夜进行提交。

工作时好好工作,休息时好好休息,是个好同志!

揭秘大牛程序员十二时辰:有人作息规律,有人全年无休

这里是他对 git 项目的提交记录  https://github.com/git/git

Sebastian Riedel

Sebastian 是两大高人气 Perl 框架——Catalyst 与 Mojolicious——的作者。他的工作安排相当疯狂,我对他的工作效率由衷钦佩。

下面来看他为  https://github.com/mojolicious/mojo repo 进行提交时的具体时间:

“工作狂”实锤了,基本上不休息的狂人大佬,佩服!

揭秘大牛程序员十二时辰:有人作息规律,有人全年无休

Chris Lattner

Chris 是 LLVM 编译器与 Swift 编程语言的作者。他在苹果公司工作了很长时间,其后加入特斯拉,目前效力于谷歌公司。

看看 https://github.com/apple/swift   repo 中的提交记录,可以想见他也是个名符其实的夜猫子:

凌晨工作效率出奇的高,你是不是也这样?

揭秘大牛程序员十二时辰:有人作息规律,有人全年无休

Rob Pike

Rob 最新的知名成就是 Go 编程语言。下面来看他在 repo  https://github.com/golang/go 中的提交记录:

也是一个该工作工作,该休息休息的规律生活人士。

揭秘大牛程序员十二时辰:有人作息规律,有人全年无休

Brad Fitzpatrick

Brad 是 LiveJournal 的作者,曾创造出 memcached,目前则正在研究 Go 编程语言。

以下是他在  https://github.com/memcached/memcached 项目中的提交记录:

白天的时间都用来研究 Go 了,所以夜里再搞 memcached。

揭秘大牛程序员十二时辰:有人作息规律,有人全年无休

再来看 Go 语言项目  https://github.com/golang/go

揭秘大牛程序员十二时辰:有人作息规律,有人全年无休

Rasmus Lerdorf

相信大家都听过,这是 PHP 编程语言的第一位开发者。

https://github.com/php/php-src  (此 repo 并不包含第一套 PHP 版本,因此只能算是 PHP 最新版本的工作时间统计):

又是一位全年无休的大佬…

揭秘大牛程序员十二时辰:有人作息规律,有人全年无休

Guido van Rossum

Python 编程语言温和的独裁者  https://github.com/python/cpython

工作日疯狂工作,休息日彻底休息,嗯,靠谱!

揭秘大牛程序员十二时辰:有人作息规律,有人全年无休

Fabrice Bellard

他曾先后创造了 FFmpeg、QEMU、Tiny C 编译器,以及最近的 QuickJS。

以下是他在  https://github.com/FFmpeg/FFmpeg 项目中的提交记录:

这是一位在夜里“效率爆发”的夜猫子,话说怎么周末也熬夜?

揭秘大牛程序员十二时辰:有人作息规律,有人全年无休

如果大家希望了解其他一些大牛程序员每天几点工作(或者想统计自己的信息),Ivan 在这里分享了自己的信息获取脚本。只需要在目标库的工作副本当中执行该单行程序即可:

需要为 git 命令指定–author 选项。在大多数情况下,可以直接指定对方的姓名:

‘–author=“Sebastian Riedel”’

也可以使用电子邮件:

'–author=“[email protected]”'并同时指定多个 "–author"

具体可参考他的 GitHub:

https://gist.github.com/bessarabov/674ea13c77fc8128f24b5e3f53b7f094


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK