Мне стало интересно, когда работают известные программисты. Это очень легко выяснить. Результат работы программистов — это код (текст программы). Код хранится в системе контроля версий (Version Control Systems, VCS). При сохранении кода в систему контроля версий записывается время.
Одна из самых популярных систем контроля версий — это git. Когда человек сохраняет код в системе контроля версий создается штука под название "Коммит".
Вот пример как выглядит информация о git коммите:
$ git cat-file commit 82be015
tree 496d6428b9cf92981dc9495211e6e1120fb6f2ba
author Ivan Bessarabov <ivan@bessarabov.ru> 1563188141 +0300
committer Ivan Bessarabov <ivan@bessarabov.ru> 1563188141 +0300
Initial commit
Тут можно увидеть сообщение с которым был создан коммит ("Initial commit"), информацию про ID в котором содержится данные о файловой структуре проекта в этом коммите ("tree 496d..."), имя и email автора коммита и, самое интересное — временная метка (timestamp) когда был сделан коммит (1563188141) и информация о часовом поясе (+0300) (У каждого коммита в git есть автор и коммитер — обычно эти строки одинаковые).
Timestamp — это количество секунд с 1-ого января 1970 года. Если перевести 1563188141 в более читаемый формат, то это будет "2019-07-15 10:55:41" — это время во временной зоне UTC. Потом к этому времени нужно добавить "03" часа "00" минут — мы получим "2019-07-15 13:55:41" — это время в том часовом поясе в котором находился автор коммита (именно это время он бы увидел на своих наручных часах когда он сделал коммит).
У серьезных программных проектов в системе контроля версий находится множество коммитов (десятки тысяч, сотни тысяч, могут быть и миллионы коммитов), сделанные множеством разных программистов. Достаточно легко написать простую программу, которая из системы контроля версий отфильтрует только коммиты одного человека и покажет время когда этот коммиты были сделаны.
Линус — это автор операционной системы Linux. Он же автор системы контроля версий git. Кроме этого он еще написал программу для аквалангистов Subsurface.
Вот график в какое время он коммитит в репозиторий https://github.com/torvalds/linux.
Линус производит впечатление абсолютно нормального человека — большинство его коммитов сделаны в 10 утра. Практически нет коммитов ночью.
00 - 61 *
01 - 21
02 - 20
03 - 13
04 - 28
05 - 116 *
06 - 263 ****
07 - 793 *************
08 - 1802 ******************************
09 - 2578 *******************************************
10 - 2963 **************************************************
11 - 2670 *********************************************
12 - 2257 **************************************
13 - 2085 ***********************************
14 - 2039 **********************************
15 - 2139 ************************************
16 - 1955 ********************************
17 - 1736 *****************************
18 - 1365 ***********************
19 - 1023 *****************
20 - 853 **************
21 - 577 *********
22 - 240 ****
23 - 128 **
А вот данные о времени его коммитов в репозиторий https://github.com/git/git:
00 - 9 ****
01 - 7 ***
02 - 4 *
03 - 0
04 - 0
05 - 0
06 - 0
07 - 20 ********
08 - 27 ************
09 - 90 ****************************************
10 - 108 ************************************************
11 - 112 **************************************************
12 - 97 *******************************************
13 - 73 ********************************
14 - 70 *******************************
15 - 104 **********************************************
16 - 77 **********************************
17 - 59 **************************
18 - 54 ************************
19 - 49 *********************
20 - 58 *************************
21 - 49 *********************
22 - 31 *************
23 - 19 ********
Sebastian — автор двух популярных Perl фреймворков: Catalyst и Mojolicious.
То как он работает — это совершенно невероятно. Завидую его продуктивности.
Вот распределение его коммитов из репозитория https://github.com/mojolicious/mojo с разбивкой по часам:
00 - 685 ***********************************************
01 - 553 **************************************
02 - 472 ********************************
03 - 414 ****************************
04 - 341 ***********************
05 - 334 ***********************
06 - 298 ********************
07 - 208 **************
08 - 147 **********
09 - 145 **********
10 - 198 *************
11 - 225 ***************
12 - 302 ********************
13 - 342 ***********************
14 - 488 *********************************
15 - 536 *************************************
16 - 630 *******************************************
17 - 678 **********************************************
18 - 723 **************************************************
19 - 641 ********************************************
20 - 626 *******************************************
21 - 628 *******************************************
22 - 686 ***********************************************
23 - 681 ***********************************************
Chris — автор компилятора LLVM и языка Swift. Он работал в Apple, потом перешел в Tesla, совсем немного там поработал и сейчас работает в Google.
Судя по распределению его коммитов в репозиторий https://github.com/apple/swift можно предположить что он сова:
00 - 324 **************************************
01 - 185 *********************
02 - 79 *********
03 - 77 *********
04 - 265 *******************************
05 - 426 **************************************************
06 - 313 ************************************
07 - 116 *************
08 - 31 ***
09 - 40 ****
10 - 41 ****
11 - 46 *****
12 - 30 ***
13 - 48 *****
14 - 105 ************
15 - 126 **************
16 - 229 **************************
17 - 245 ****************************
18 - 237 ***************************
19 - 151 *****************
20 - 300 ***********************************
21 - 394 **********************************************
22 - 387 *********************************************
23 - 341 ****************************************
Одна из его последних работ — это язык программирования Go.
Вот график его коммитов в репозиторий https://github.com/golang/go:
00 - 29 ****
01 - 1
02 - 1
03 - 5
04 - 0
05 - 5
06 - 19 **
07 - 62 *********
08 - 80 ***********
09 - 126 ******************
10 - 240 ***********************************
11 - 338 *************************************************
12 - 184 ***************************
13 - 339 **************************************************
14 - 317 **********************************************
15 - 301 ********************************************
16 - 264 **************************************
17 - 224 *********************************
18 - 73 **********
19 - 69 **********
20 - 91 *************
21 - 79 ***********
22 - 64 *********
23 - 51 *******
Бред — создатель LiveJournal, он создал memcached и сейчас работает над языком программирования Go.
Вот график его коммитов в репозиторий https://github.com/memcached/memcached:
00 - 11 ********************************
01 - 10 *****************************
02 - 17 **************************************************
03 - 7 ********************
04 - 7 ********************
05 - 13 **************************************
06 - 8 ***********************
07 - 8 ***********************
08 - 2 *****
09 - 0
10 - 3 ********
11 - 1 **
12 - 0
13 - 0
14 - 0
15 - 0
16 - 4 ***********
17 - 8 ***********************
18 - 9 **************************
19 - 9 **************************
20 - 12 ***********************************
21 - 10 *****************************
22 - 11 ********************************
23 - 14 *****************************************
А вот в какое время он коммитит в язык Go https://github.com/golang/go:
00 - 44 *************
01 - 30 *********
02 - 26 ********
03 - 24 *******
04 - 26 ********
05 - 27 ********
06 - 21 ******
07 - 38 ***********
08 - 68 ********************
09 - 114 ***********************************
10 - 145 ********************************************
11 - 160 *************************************************
12 - 124 **************************************
13 - 130 ****************************************
14 - 148 *********************************************
15 - 160 *************************************************
16 - 162 **************************************************
17 - 158 ************************************************
18 - 143 ********************************************
19 - 127 ***************************************
20 - 104 ********************************
21 - 100 ******************************
22 - 115 ***********************************
23 - 69 *********************
Первый разработчик языка программирования PHP.
https://github.com/php/php-src (в этом репозитории нет первых версий PHP, так что это статистика его работы над актуальными версиями PHP):
00 - 55 **************************
01 - 29 *************
02 - 21 **********
03 - 28 *************
04 - 42 ********************
05 - 52 *************************
06 - 41 *******************
07 - 22 **********
08 - 44 *********************
09 - 56 **************************
10 - 37 *****************
11 - 25 ************
12 - 30 **************
13 - 43 ********************
14 - 67 ********************************
15 - 71 **********************************
16 - 104 **************************************************
17 - 104 **************************************************
18 - 99 ***********************************************
19 - 56 **************************
20 - 56 **************************
21 - 82 ***************************************
22 - 96 **********************************************
23 - 78 *************************************
Великодушный пожизненный диктатор языка программирования Python https://github.com/python/cpython:
00 - 346 *****************
01 - 233 ***********
02 - 304 ***************
03 - 247 ************
04 - 229 ***********
05 - 126 ******
06 - 67 ***
07 - 52 **
08 - 107 *****
09 - 186 *********
10 - 200 **********
11 - 230 ***********
12 - 317 ***************
13 - 572 ****************************
14 - 844 ******************************************
15 - 994 **************************************************
16 - 899 *********************************************
17 - 801 ****************************************
18 - 815 ****************************************
19 - 789 ***************************************
20 - 818 *****************************************
21 - 749 *************************************
22 - 750 *************************************
23 - 517 **************************
Создатель QEMU, Tiny C Compiler и совсем недавно он анонсировал QuickJS.
Вот распределение его коммитов в проекте https://github.com/FFmpeg/FFmpeg:
00 - 17 *******
01 - 4 *
02 - 1
03 - 0
04 - 6 **
05 - 5 **
06 - 0
07 - 4 *
08 - 4 *
09 - 15 ******
10 - 20 *********
11 - 10 ****
12 - 13 ******
13 - 41 ******************
14 - 47 *********************
15 - 23 **********
16 - 44 ********************
17 - 51 ***********************
18 - 50 ***********************
19 - 30 *************
20 - 31 **************
21 - 46 *********************
22 - 108 **************************************************
23 - 43 *******************
Если вы хотите посмотреть на время работы других программистов (или хотите получить такую же информацию о самом себе), то вот скрипт, который я использовал для генерации этих данных. Это однострочник, который нужно запустить в рабочей копии git репозитория. Необходимо указать опцию --author. В самой простом случае нужно только указать имя под которым были сделаны коммиты в git ('--author="Sebastian Riedel"'). Но иногда нужно указать email ('--author="torvalds@ppc970.osdl.org"') (например в той ситуации если не все коммиты сделаны под одним и тем же именем). А еще возможно указать --author несколько раз.
https://gist.github.com/bessarabov/674ea13c77fc8128f24b5e3f53b7f094
Если вам интересны подробности как это работает, то можно почитать подробнее про Perl однострочники.
16 июля 2019
Этот текст есть и на английском языке |