Как мы отранжировали девять миллионов разработчиков на Github
- среда, 8 марта 2017 г. в 17:27:21
Источник изображения: beta.gitlance.net/top/javascript
Оценивая разработчика ПО в качестве потенциального партнера, работника или подрядчика, многим доводилось в какой-то момент потратить время на копание в его репозиториях на Github, пытаясь понять, что за проекты тот пишет и какого качества у него код. Это занятие малоэффективно, к тому же еще сопряжено с определенными трудностями как оценивание степени вклада разработчика в тот или иной репозиторий, качества его кода; можно гадать о том, действительно ли это его код, и так далее.
Разработчикам же, со своей стороны, трудно преподнести свой талант в доступной и наглядной форме. Многие в итоге создают собственные веб-сайты с перечислением интересных проектов, в которых участвовали или сами являются их авторами, что, конечно, дает результат, но тоже с переменным успехом.
Мы же верим, что есть способ получше, и именно поэтому создали GitLance. По сути своей, коммиты в Git подобно бухгалтерской книге надежно фиксируют вклад каждого из участников, а на Github находится огромное множество публичных репозиториев Git вместе с их разработчиками, а также сравнимое количество их взаимных оценок в виде звёздочек на репозиториях и форков, идущих от них. Так почему бы не воспользоваться этим для генерации кодового графа?
Это и представляет собой основу GitLance: кодовый граф из более чем 500 миллионов коммитов и звездочек от более чем 9 миллионов разработчиков по 39 миллионам репозиториев на более чем 350 разных языках программирования. Поскольку отдельные коммиты могут появляться в нескольких репозиториях (в частности, в их форках) и содержать в себе более одного файла (а, значит, и языка программирования), то на выходе получается довольно большой граф: около 15 миллиардов ребер в несжатом виде, плюс-минус миллиард или два.
Если кому любопытно, то граф целиком загружается в память, а сам хранится на шардах с базой данных MongoDB. Наш проект написан на Go, а алгоритм оценки по сути похож на PageRank, с репозиториями и пользователями как основными типами вершин, а рёбра в нем определяются коммитами, звездочками и форками.
В конечном счете, все сводится примерно к 23 миллионам рейтингов по языкам программирования, из которых мы и вывели те самые рейтинги программистов. На сегодняшний день, мировой ТОП-200 лучших JavaScript-разработчиков доступен по адресу: beta.gitlance.net/top/javascript. Если вас нет в этом списке, то можете ввести свой логин Github в поиск и посмотреть на какой позиции находитесь вы.
GitLance существует для того, чтобы привлечь внимание и дать признание талантам и вкладам лучших мировых разработчиков. Мы будем выпускать ТОП-списки и для других языков программирования в ближайшие дни и недели, а также разные фичи, в том числе личные профили разработчиков, и со временем появится фриланс-биржа профессионалов высшего класса. Оставайтесь на связи!
Несмотря на то, что в оригинальной статье не раскрыты потенциально интересные для технической аудитории детали, на мой взгляд, сам продукт получился весьма любопытным и, возможно, одним из первых в своем роде, потому я решил собрать и перевести ту немногую информацию, что о нем есть.
Если же вы до этого слышали о подобных проектах, занимающихся выведением критериев “программист X лучше программиста Y” на основе разной статистики, поделитесь в комментариях, пожалуйста. Также интересно, что вы думаете об этом направлении анализа? Может ли автоматизированный анализ профессиональных навыков стать в рекрутинге чем-то самим собой разумеющимся, и не будет ли от этого больше вреда, чем пользы?
В любом случае, GitLance представляет лишь одну из возможных систем оценок профессионализма разработчика, и пока что очень ограниченную — анализируется популярность ваших продуктов с открытым исходным кодом среди других разработчиков. Чем это может быть для вас: очередным ненужным продуктом, линейкой для замеров достоинства несомненно, профессионального у себя и у коллег, либо инструментом мониторинга широкой известности в узких кругах — тут уже решать вам.
P. S. По личным наблюдениям, данные там обновляются около раза в месяц, так что иной раз туда можно наведываться за свежими рейтингами.