Одна из распространённых ошибок — попытка работодателя отфильтровать кандидатов по профилям GitHub. Многие по-прежнему думают, что можно оценить способности разработчика, взглянув на его вклад в проекты с открытым исходным кодом. Например, в последнем списке вакансий на Hacker News кучаобъявленийспросьбойуказатьпрофильGitHubв своём заявлении о приёме на работу.
Есть несколько правильных статей, почему нельзя требовать от кандидатов профили GitHub. Особенно рекомендую «Этика неоплачиваемого труда и сообщество Open Source» и «Почему GitHub — не резюме». Обе статьи отлично объясняют причины, почему при найме не следует спрашивать о вкладе в свободные проекты. Но я не о том, что это неэтично или что GitHub не слишком подходит для демонстрации проектов.
Я о том, почему эти профили просто малополезны.
Если посмотрите публичный профиль лучшего инженера-программиста, с которым я когда-либо работал, то увидите примерно такое:
Хотя он в прошлом году написал тонну кода по работе, но не опубликовал ничего для публичного просмотра: никаких публичных коммитов, никаких собственных репозиториев. У него очень мало фоловеров. Несмотря на всё это, он по-прежнему лучший разработчик, с которым я когда-либо имел удовольствие работать.
Со своим относительно неактивным профилем GitHub он не одинок: похожая картина у подавляющего большинства пользователей GitHub. Для количественной оценки я собрал публичные коммиты всех пользователей из GitHub Archive и получил такие цифры:
- Только 17% пользователей в прошлом году запушили какой-то код
- Только 7,4% пользователей сделали это более 10 раз
- Только 1,4% пользователей сделали это более 100 раз
- Только 0,15% пользователей сделали это более 500 раз
Такое распределение примерно соответствует степенному закону (или, по крайней мере, чему-то похожему). Это означает, что большинство пользователей относительно малоактивны, но в небольшом количестве аккаунтов — сотни тысяч коммитов за год.
Для примера взгляните на график по проценту разработчиков на GitHub с определённым количеством фоловеров:
Получить количество коммитов из GitHub API сложно [1], так что я привожу количество фоловеров, у которых похожее распределение. Если вы введёте свой userid на странице статьи, то получите мини-отчёт, на какой позиции находитесь.
Плюс в том, что даже с 10 фоловерами вы можете смело утверждать, что входите в топовый 1% всех разработчиков.
Минус в том, что если у подавляющего числа разработчиков нет данных в публичных профилях, то эти профили нельзя использовать для фильтрации кандидатов на работу. У 83% нет коммитов за прошлый год, а у 88% нет фоловеров. Это не значит, что они плохие разработчики. Просто у них нет нет вклада в проекты open source, чтобы похвастаться.
Это очевидно: публичные профили GitHub действительно показывают только людей, которые создают программное обеспечение с открытым исходным кодом. Подавляющее большинство производимого ПО — с закрытым исходным кодом, и отсутствие вклада в open source означает примерно ничего, если вы всю карьеру работали над проприетарной технологией.
Думаю, наиболее поучительно сравнить известных программистов, которые работают в индустрии open source, с другими знаменитостями, которые работают в другой индустрии. Например, у Линуса Торвальдса больше всего фоловеров на GitHub. Это вполне оправданно, ведь он создатель нескольких невероятно успешных проектов с открытым исходным кодом, таких как Linux и git. С другой стороны, у Джона Кармака или Джеффа Дина вообще нет профилей GitHub, хотя они оба хорошо известны своей работой в одинаково успешных проектах с закрытым исходным кодом, таких как Doom и Google.
Я всегда считал, что требовать предоставить примеры коммитов open source при поиске разработчиков в проект с проприетарным кодом — это верх лицемерия. Это напоминает компании, которые требуют рекомендации, но сами запрещают выдавать рекомендации бывшим сотрудникам. Если вы не разрешите человеку писать проекты с открытым исходным кодом, то нет смысла требовать наличия таких проектов для получения работы.
Даже если оставить лицемерие в стороне, оценка по профилю GitHub выглядит сомнительно, если она исключает большинство разработчиков, в том числе таких как Джон Кармак и Джефф Дин. Мне кажется, должен быть некий «Тест Джеффа Дина» для найма: если ваши требования по вакансии разработчика исключают кого-то вроде Джеффа Дина, вероятно, вы что-то делаете неправильно.
Даже у той малой части разработчиков c проектами на GitHub большинство проектов не слишком впечатляют.
В наше время на многих курсах по программированию и в университетах от студентов требуют создавать репозитории GitHub в рамках учебной программы. Хотя я полностью поддерживаю обучение новых программистов навыкам управления версиями, но проекты, которые при этом создаются, не говорят мне ничего кроме того, что они закончили курс. К примеру, на GitHub около 190 000 репозиториев с названием "datasciencecoursera".
Кроме того, из более чем 78 миллионов репозиториев в GitHub Archive около 1,1 млн называются "hello-world" и 1 млн называются "test".
Поскольку на GitHub так много посредственных проектов, логично было бы рассматривать всерьёз только проекты с большим количеством звёзд или профили с большим количеством фоловеров. Даже без учёта того, что так вы ещё больше ограничиваете пул кандидатов, это всё равно далеко не эффективный способ оценки разработчика, поскольку он показывает только популярность, а не талант.
В качестве примера взгляните на Github-профиль Stichpunk:
У этого профиля около 1560 подписчиков, что вносит девушку в топ 0,002% лучших разработчиков на GitHub. У неё также несколько относительно популярных репозиториев и она, похоже, работает в крупной IT-компании. На первый взгляд, это довольно респектабельный разработчик.
Но это профиль не настоящего человека. Он создан авторами сериала «Кремниевая долина» для эпизода «Табы против пробелов»:
Каждый раз, когда вы всерьёз рассматриваете количество фоловеров GitHub как некий значимый показатель, просто помните, что у фейкового профиля персонажа из одного-единственного эпизода сериала больше последователей, чем у 99,998% разработчиков, и он располагается примерно на 670-м месте в мире.
Точно так же, если посмотреть на самые популярные репозитории по количеству звёзд, многие из них — это списки или шутки. Хотя может и нелегко создать настолько популярные списки или шутки, но это ничего не говорит о таланте разработчика.
Многие популярные проекты на самом деле очень впечатляющие. Я не пытаюсь утверждать, что популярность и качество хотя бы немного не коррелируют. Проблема в том, что сделать проект популярным — это совсем другая задача, требующая совсем другого набора навыков, чем просто написание качественного кода.
Профили GitHub не только малополезны для найма разработчиков, но и не слишком помогают самим разработчикам, ищущим работу.
У меня было немного собеседований за последнее десятилетие, но насколько я могу судить, никто из интервьюеров не проверял мой профиль GitHub перед собеседованием. На самом деле один даже заявил, что не читал моё резюме, не говоря уже о профиле GitHub, что мне показалось привлекательно честным заявлением.
Судя по рассказам, это довольно распространённая практика. Например, Дэн Луу написал в твиттере:
«Несмотря на шумиху о том, как open source помогает вашей карьере и что github==резюме, у меня только в 2 из 50 интервью кто-то смотрел мой код» — Дэн Луу
Дэн Луу входит в топ-1000 по количеству фоловеров на GitHub. По крайней мере, мой опыт не объясняется только относительно скромным портфолио на GitHub.
Или вот на hftguy.com один разработчик изучал аналитику GitHub после прохождения множества собеседований — и обнаружил, что его проекты зашёл посмотреть только 1 человек (и это может быть он сам во время проверки):
«После дюжины телефонных собеседований (1 разработчик за звонок) и нескольких очных (от 4 до 7 интервьюеров) мой профиль посмотрели только один раз. Вывод: никого не волнует GitHub. Никто не будет его смотреть»
Хотя профили GitHub затруднительно использовать как источник данных, я всё равно планирую использовать их для будущего проекта. Идея в том, что хотя профили отдельных пользователей дают разреженный зашумлённый сигнал, но объединение информации от большого количества пользователей всё ещё позволяет обнаружить некоторые интересные тенденции.
Сноска 1
На GitHub нет API, чтобы получить статистику по активности за последний год. Судя по всему, выдаётся временная шкала в SVG (вроде такой), которую можно распарсить. Я почти справился с этим хаком для данной статьи, но упёрся в некоторые ограничения CORS по загрузке этого в браузере. Можно было написать прокси для запросов, но это уже превращалось в маразм, так что я выбрал вариант с фоловерами. ↑
Комментариев нет:
Отправить комментарий