- PVSM.RU - https://www.pvsm.ru -

Почему GitHub не поможет нанять разработчика

Один из моих текущих проектов связан со сбором данных из GitHub-профилей разработчиков. Профили GitHub затруднительно использовать как источник данных, поэтому хочу сразу перечислить проблемы при попытке оценить разработчика только по его вкладу на GitHub.

Одна из распространённых ошибок — попытка работодателя отфильтровать кандидатов по профилям GitHub. Многие по-прежнему думают, что можно оценить способности разработчика, взглянув на его вклад в проекты с открытым исходным кодом. Например, в последнем списке вакансий [1] на Hacker News куча [2] объявлений [3] с [4] просьбой [5] указать [6] профиль [7] GitHub [8] в своём заявлении о приёме на работу [9].

Есть несколько правильных статей, почему нельзя требовать от кандидатов профили GitHub. Особенно рекомендую «Этика неоплачиваемого труда и сообщество Open Source» [10] и «Почему GitHub — не резюме» [11]. Обе статьи отлично объясняют причины, почему при найме не следует спрашивать о вкладе в свободные проекты. Но я не о том, что это неэтично или что GitHub не слишком подходит для демонстрации проектов.

Я о том, почему эти профили просто малополезны.

Разреженность данных

Если посмотрите публичный профиль лучшего инженера-программиста, с которым я когда-либо работал, то увидите примерно такое:

Почему GitHub не поможет нанять разработчика - 1

Хотя он в прошлом году написал тонну кода по работе, но не опубликовал ничего для публичного просмотра: никаких публичных коммитов, никаких собственных репозиториев. У него очень мало фоловеров. Несмотря на всё это, он по-прежнему лучший разработчик, с которым я когда-либо имел удовольствие работать.

Со своим относительно неактивным профилем GitHub он не одинок: похожая картина у подавляющего большинства пользователей GitHub. Для количественной оценки я собрал публичные коммиты всех пользователей из GitHub Archive [12] и получил такие цифры:

  • Только 17% пользователей в прошлом году запушили какой-то код
  • Только 7,4% пользователей сделали это более 10 раз
  • Только 1,4% пользователей сделали это более 100 раз
  • Только 0,15% пользователей сделали это более 500 раз

Такое распределение примерно соответствует степенному закону [13] (или, по крайней мере, чему-то похожему [14]). Это означает, что большинство пользователей относительно малоактивны, но в небольшом количестве аккаунтов — сотни тысяч коммитов за год.

Для примера взгляните на график по проценту разработчиков на GitHub с определённым количеством фоловеров:

Почему GitHub не поможет нанять разработчика - 2

Получить количество коммитов из GitHub API сложно [1] [15]на странице статьи [16], то получите мини-отчёт, на какой позиции находитесь.

Плюс в том, что даже с 10 фоловерами вы можете смело утверждать, что входите в топовый 1% всех разработчиков.

Минус в том, что если у подавляющего числа разработчиков нет данных в публичных профилях, то эти профили нельзя использовать для фильтрации кандидатов на работу. У 83% нет коммитов за прошлый год, а у 88% нет фоловеров. Это не значит, что они плохие разработчики. Просто у них нет нет вклада в проекты open source, чтобы похвастаться.

GitHub показывает только вклад в open source

Это очевидно: публичные профили GitHub действительно показывают только людей, которые создают программное обеспечение с открытым исходным кодом. Подавляющее большинство производимого ПО — с закрытым исходным кодом, и отсутствие вклада в open source означает примерно ничего, если вы всю карьеру работали над проприетарной технологией.

Думаю, наиболее поучительно сравнить известных программистов, которые работают в индустрии open source, с другими знаменитостями, которые работают в другой индустрии. Например, у Линуса Торвальдса [17] больше всего фоловеров на GitHub. Это вполне оправданно, ведь он создатель нескольких невероятно успешных проектов с открытым исходным кодом, таких как Linux и git. С другой стороны, у Джона Кармака [18] или Джеффа Дина [19] вообще нет профилей GitHub, хотя они оба хорошо известны своей работой в одинаково успешных проектах с закрытым исходным кодом, таких как Doom и Google.

Я всегда считал, что требовать предоставить примеры коммитов open source при поиске разработчиков в проект с проприетарным кодом — это верх лицемерия. Это напоминает компании, которые требуют рекомендации, но сами запрещают выдавать рекомендации бывшим сотрудникам. Если вы не разрешите человеку писать проекты с открытым исходным кодом, то нет смысла требовать наличия таких проектов для получения работы.

Даже если оставить лицемерие в стороне, оценка по профилю GitHub выглядит сомнительно, если она исключает большинство разработчиков, в том числе таких как Джон Кармак и Джефф Дин. Мне кажется, должен быть некий «Тест Джеффа Дина» для найма: если ваши требования по вакансии разработчика исключают кого-то вроде Джеффа Дина, вероятно, вы что-то делаете неправильно.

Большинство проектов GitHub не впечатляют

Даже у той малой части разработчиков c проектами на GitHub большинство проектов не слишком впечатляют.

В наше время на многих курсах по программированию и в университетах от студентов требуют создавать репозитории GitHub в рамках учебной программы. Хотя я полностью поддерживаю обучение новых программистов навыкам управления версиями, но проекты, которые при этом создаются, не говорят мне ничего кроме того, что они закончили курс. К примеру, на GitHub около 190 000 репозиториев с названием "datasciencecoursera [20]".

Кроме того, из более чем 78 миллионов репозиториев в GitHub Archive [12] около 1,1 млн называются "hello-world" и 1 млн называются "test".

Число фоловеров показывает популярность, а не талант

Поскольку на GitHub так много посредственных проектов, логично было бы рассматривать всерьёз только проекты с большим количеством звёзд или профили с большим количеством фоловеров. Даже без учёта того, что так вы ещё больше ограничиваете пул кандидатов, это всё равно далеко не эффективный способ оценки разработчика, поскольку он показывает только популярность, а не талант.

В качестве примера взгляните на Github-профиль Stichpunk [21]:

Почему GitHub не поможет нанять разработчика - 3

У этого профиля около 1560 подписчиков, что вносит девушку в топ 0,002% лучших разработчиков на GitHub. У неё также несколько относительно популярных репозиториев и она, похоже, работает в крупной IT-компании. На первый взгляд, это довольно респектабельный разработчик.

Но это профиль не настоящего человека. Он создан авторами сериала «Кремниевая долина» [22] для эпизода «Табы против пробелов»:

Каждый раз, когда вы всерьёз рассматриваете количество фоловеров GitHub как некий значимый показатель, просто помните, что у фейкового профиля персонажа из одного-единственного эпизода сериала больше последователей, чем у 99,998% разработчиков, и он располагается примерно на 670-м месте в мире.

Точно так же, если посмотреть на самые популярные репозитории по количеству звёзд, многие из них — это списки [23] или шутки [24]. Хотя может и нелегко создать настолько популярные списки или шутки, но это ничего не говорит о таланте разработчика.

Многие популярные проекты на самом деле очень впечатляющие. Я не пытаюсь утверждать, что популярность и качество хотя бы немного не коррелируют. Проблема в том, что сделать проект популярным — это совсем другая задача, требующая совсем другого набора навыков, чем просто написание качественного кода.

Интервьюеры не проверяют профили GitHub

Профили GitHub не только малополезны для найма разработчиков, но и не слишком помогают самим разработчикам, ищущим работу.

У меня было немного собеседований за последнее десятилетие, но насколько я могу судить, никто из интервьюеров не проверял мой профиль GitHub перед собеседованием. На самом деле один даже заявил, что не читал моё резюме, не говоря уже о профиле GitHub, что мне показалось привлекательно честным заявлением.

Судя по рассказам, это довольно распространённая практика. Например, Дэн Луу написал [25] в твиттере:

«Несмотря на шумиху о том, как open source помогает вашей карьере и что github==резюме, у меня только в 2 из 50 интервью кто-то смотрел мой код» — Дэн Луу

Дэн Луу [26] входит в топ-1000 по количеству фоловеров на GitHub. По крайней мере, мой опыт не объясняется только относительно скромным портфолио на GitHub.

Или вот на hftguy.com [27] один разработчик изучал аналитику GitHub после прохождения множества собеседований — и обнаружил, что его проекты зашёл посмотреть только 1 человек (и это может быть он сам во время проверки):

«После дюжины телефонных собеседований (1 разработчик за звонок) и нескольких очных (от 4 до 7 интервьюеров) мой профиль посмотрели только один раз. Вывод: никого не волнует GitHub. Никто не будет его смотреть»

Хотя профили GitHub затруднительно использовать как источник данных, я всё равно планирую использовать их для будущего проекта. Идея в том, что хотя профили отдельных пользователей дают разреженный зашумлённый сигнал, но объединение информации от большого количества пользователей всё ещё позволяет обнаружить некоторые интересные тенденции.

Сноска 1
На GitHub нет API, чтобы получить статистику по активности за последний год. Судя по всему, выдаётся временная шкала [28] в SVG (вроде такой [29]), которую можно распарсить. Я почти справился с этим хаком для данной статьи, но упёрся в некоторые ограничения CORS по загрузке этого в браузере. Можно было написать прокси для запросов, но это уже превращалось в маразм, так что я выбрал вариант с фоловерами. [30]

Автор: m1rko

Источник [31]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/open-source/274946

Ссылки в тексте:

[1] списке вакансий: https://news.ycombinator.com/item?id=16492994

[2] куча: https://news.ycombinator.com/item?id=16493838

[3] объявлений: https://news.ycombinator.com/item?id=16500583

[4] с: https://news.ycombinator.com/item?id=16493640

[5] просьбой: https://news.ycombinator.com/item?id=16524380

[6] указать: https://news.ycombinator.com/item?id=16495405

[7] профиль: https://news.ycombinator.com/item?id=16493780

[8] GitHub: https://news.ycombinator.com/item?id=16495923

[9] в своём заявлении о приёме на работу: https://news.ycombinator.com/item?id=16495273

[10] «Этика неоплачиваемого труда и сообщество Open Source»: https://www.ashedryden.com/blog/the-ethics-of-unpaid-labor-and-the-oss-community

[11] «Почему GitHub — не резюме»: https://blog.jcoglan.com/2013/11/15/why-github-is-not-your-cv/

[12] GitHub Archive: https://www.githubarchive.org/

[13] степенному закону: https://en.wikipedia.org/wiki/Power_law

[14] чему-то похожему: http://bactra.org/weblog/491.html

[15] [1]: #1

[16] на странице статьи: https://www.benfrederickson.com/github-wont-help-with-hiring/

[17] Линуса Торвальдса: https://github.com/torvalds

[18] Джона Кармака: https://en.wikipedia.org/wiki/John_Carmack

[19] Джеффа Дина: https://en.wikipedia.org/wiki/Jeff_Dean_(computer_scientist)

[20] datasciencecoursera: https://github.com/search?utf8=%E2%9C%93&q=datasciencecoursera&type=

[21] Stichpunk: https://github.com/Stitchpunk

[22] «Кремниевая долина»: https://en.wikipedia.org/wiki/Silicon_Valley_%28TV_series%29

[23] списки: https://github.com/sindresorhus/awesome

[24] шутки: https://github.com/kelseyhightower/nocode

[25] написал: https://twitter.com/danluu/status/806222862663053312

[26] Дэн Луу: https://github.com/danluu

[27] hftguy.com: https://thehtfguy.com/

[28] выдаётся временная шкала: https://stackoverflow.com/questions/18262288/finding-total-contributions-of-a-user-from-github-api

[29] такой: https://github.com/users/benfred/contributions

[30] ↑: #1_1

[31] Источник: https://habrahabr.ru/post/350912/?utm_source=habrahabr&utm_medium=rss&utm_campaign=350912