- PVSM.RU - https://www.pvsm.ru -
Один из моих текущих проектов связан со сбором данных из GitHub-профилей разработчиков. Профили GitHub затруднительно использовать как источник данных, поэтому хочу сразу перечислить проблемы при попытке оценить разработчика только по его вкладу на GitHub.
Одна из распространённых ошибок — попытка работодателя отфильтровать кандидатов по профилям GitHub. Многие по-прежнему думают, что можно оценить способности разработчика, взглянув на его вклад в проекты с открытым исходным кодом. Например, в последнем списке вакансий [1] на Hacker News куча [2] объявлений [3] с [4] просьбой [5] указать [6] профиль [7] GitHub [8] в своём заявлении о приёме на работу [9].
Есть несколько правильных статей, почему нельзя требовать от кандидатов профили GitHub. Особенно рекомендую «Этика неоплачиваемого труда и сообщество Open Source» [10] и «Почему GitHub — не резюме» [11]. Обе статьи отлично объясняют причины, почему при найме не следует спрашивать о вкладе в свободные проекты. Но я не о том, что это неэтично или что GitHub не слишком подходит для демонстрации проектов.
Я о том, почему эти профили просто малополезны.
Если посмотрите публичный профиль лучшего инженера-программиста, с которым я когда-либо работал, то увидите примерно такое:
Хотя он в прошлом году написал тонну кода по работе, но не опубликовал ничего для публичного просмотра: никаких публичных коммитов, никаких собственных репозиториев. У него очень мало фоловеров. Несмотря на всё это, он по-прежнему лучший разработчик, с которым я когда-либо имел удовольствие работать.
Со своим относительно неактивным профилем GitHub он не одинок: похожая картина у подавляющего большинства пользователей GitHub. Для количественной оценки я собрал публичные коммиты всех пользователей из GitHub Archive [12] и получил такие цифры:
Такое распределение примерно соответствует степенному закону [13] (или, по крайней мере, чему-то похожему [14]). Это означает, что большинство пользователей относительно малоактивны, но в небольшом количестве аккаунтов — сотни тысяч коммитов за год.
Для примера взгляните на график по проценту разработчиков на GitHub с определённым количеством фоловеров:
Получить количество коммитов из GitHub API сложно [1] [15]на странице статьи [16], то получите мини-отчёт, на какой позиции находитесь.
Плюс в том, что даже с 10 фоловерами вы можете смело утверждать, что входите в топовый 1% всех разработчиков.
Минус в том, что если у подавляющего числа разработчиков нет данных в публичных профилях, то эти профили нельзя использовать для фильтрации кандидатов на работу. У 83% нет коммитов за прошлый год, а у 88% нет фоловеров. Это не значит, что они плохие разработчики. Просто у них нет нет вклада в проекты open source, чтобы похвастаться.
Это очевидно: публичные профили GitHub действительно показывают только людей, которые создают программное обеспечение с открытым исходным кодом. Подавляющее большинство производимого ПО — с закрытым исходным кодом, и отсутствие вклада в open source означает примерно ничего, если вы всю карьеру работали над проприетарной технологией.
Думаю, наиболее поучительно сравнить известных программистов, которые работают в индустрии open source, с другими знаменитостями, которые работают в другой индустрии. Например, у Линуса Торвальдса [17] больше всего фоловеров на GitHub. Это вполне оправданно, ведь он создатель нескольких невероятно успешных проектов с открытым исходным кодом, таких как Linux и git. С другой стороны, у Джона Кармака [18] или Джеффа Дина [19] вообще нет профилей GitHub, хотя они оба хорошо известны своей работой в одинаково успешных проектах с закрытым исходным кодом, таких как Doom и Google.
Я всегда считал, что требовать предоставить примеры коммитов open source при поиске разработчиков в проект с проприетарным кодом — это верх лицемерия. Это напоминает компании, которые требуют рекомендации, но сами запрещают выдавать рекомендации бывшим сотрудникам. Если вы не разрешите человеку писать проекты с открытым исходным кодом, то нет смысла требовать наличия таких проектов для получения работы.
Даже если оставить лицемерие в стороне, оценка по профилю GitHub выглядит сомнительно, если она исключает большинство разработчиков, в том числе таких как Джон Кармак и Джефф Дин. Мне кажется, должен быть некий «Тест Джеффа Дина» для найма: если ваши требования по вакансии разработчика исключают кого-то вроде Джеффа Дина, вероятно, вы что-то делаете неправильно.
Даже у той малой части разработчиков c проектами на GitHub большинство проектов не слишком впечатляют.
В наше время на многих курсах по программированию и в университетах от студентов требуют создавать репозитории GitHub в рамках учебной программы. Хотя я полностью поддерживаю обучение новых программистов навыкам управления версиями, но проекты, которые при этом создаются, не говорят мне ничего кроме того, что они закончили курс. К примеру, на GitHub около 190 000 репозиториев с названием "datasciencecoursera [20]".
Кроме того, из более чем 78 миллионов репозиториев в GitHub Archive [12] около 1,1 млн называются "hello-world" и 1 млн называются "test".
Поскольку на GitHub так много посредственных проектов, логично было бы рассматривать всерьёз только проекты с большим количеством звёзд или профили с большим количеством фоловеров. Даже без учёта того, что так вы ещё больше ограничиваете пул кандидатов, это всё равно далеко не эффективный способ оценки разработчика, поскольку он показывает только популярность, а не талант.
В качестве примера взгляните на Github-профиль Stichpunk [21]:
У этого профиля около 1560 подписчиков, что вносит девушку в топ 0,002% лучших разработчиков на GitHub. У неё также несколько относительно популярных репозиториев и она, похоже, работает в крупной IT-компании. На первый взгляд, это довольно респектабельный разработчик.
Но это профиль не настоящего человека. Он создан авторами сериала «Кремниевая долина» [22] для эпизода «Табы против пробелов»:
Каждый раз, когда вы всерьёз рассматриваете количество фоловеров GitHub как некий значимый показатель, просто помните, что у фейкового профиля персонажа из одного-единственного эпизода сериала больше последователей, чем у 99,998% разработчиков, и он располагается примерно на 670-м месте в мире.
Точно так же, если посмотреть на самые популярные репозитории по количеству звёзд, многие из них — это списки [23] или шутки [24]. Хотя может и нелегко создать настолько популярные списки или шутки, но это ничего не говорит о таланте разработчика.
Многие популярные проекты на самом деле очень впечатляющие. Я не пытаюсь утверждать, что популярность и качество хотя бы немного не коррелируют. Проблема в том, что сделать проект популярным — это совсем другая задача, требующая совсем другого набора навыков, чем просто написание качественного кода.
Профили 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
Нажмите здесь для печати.