JetBrains logo

Источники данных

Чтобы оценить количество разработчиков в той или иной стране, мы используем данные международных организаций, собирающих данные труда (таких как Евростат), а также обращаемся к государственной статистике по нужной стране (например, для Канады — к данным Статистического управления Канады). Поскольку разные страны по-разному определяют программистов и всех других специалистов, связанных с программированием, мы собираем данные, которые наилучшим образом соответствуют целям этого исследования. Например, в США ближе всего к понятию «разработчик» следующие специальности:

  • 15-1131 Computer Programmers (программисты)
  • 15-1132 Software Developers, Applications (разработчики ПО — приложения)
  • 15-1133 Software Developers, Systems Software (разработчики ПО — системное ПО)
  • 15-1134 Web Developers (веб-разработчики)
  • 15-1242 Database Administrators (администраторы баз данных)
  • 15-1243 Database Architects (архитекторы баз данных)
  • 15-1253 Software Quality Assurance Analysts and Testers (аналитики и тестировщики качества программного обеспечения)
  • 15-2031 Operations Research Analysts (специалисты по исследованию операций)
  • 15-2041 Statisticians (специалисты в области статистики)
  • 15-2051 Data Scientists (специалисты по анализу и обработке данных)

Каждый год мы проводим исследование экосистемы разработки, в котором принимают участие порядка 30 000 респондентов из разных стран. На основе этих данных мы выстроили модель нашего исследования. Она позволяет нам получить комплексное представление о сообществе разработчиков, в том числе важную информацию о популярных языках программирования, инструментах, технологиях, предпочтениях и новых тенденциях.

Наша модель

При построении модели мы исходим из численности населения и количества разработчиков в определенной стране (X) в нужный год (T). Мы используем свежие общедоступные данные по стране, чтобы определить ближайший год, для которого есть информация, необходимая для расчетов, и вычислить удельный вес разработчиков в стране в заданный год.

DevDensity = DevNumber/Population

Чтобы предсказать количество разработчиков в будущем (например, на годы T+1, T+2 и т. д.) для определенной страны (X), мы ориентируемся на два варианта: либо предполагаем, что их число будет расти по линейному тренду, либо считаем его стабильным, если последние данные устарели. Затем этот показатель сопоставляется с последней оценкой численности населения страны, предоставленной ООН. Ретроспективный анализ подтверждает правильность такого подхода.

Чтобы вычислить количество разработчиков в тех странах, для которых у нас нет данных, мы используем данные по другим странам того же региона (обозначается «Y»). Для каждой страны Yᵢ мы вычисляем средний удельный вес за тот же год. После этого мы выбираем 10%-ный квантиль среди итоговых усредненных значений. Это дает приблизительный удельный вес разработчиков в стране X.

Вычислив удельный вес разработчиков в целом, мы можем определить размер определенной категории разработчиков внутри сообщества. Зная долю интересующей нас категории в выборке данных исследования «Экосистема разработки» (например, процент разработчиков, использующих Python, от общего числа разработчиков), мы можем вычислить размер этой категории следующим образом:

CategorySize = CategoryShare х DevPopulation

Предположим, что нам нужно определить число разработчиков, использующих Python, в США в 2024 году.

У нас есть данные исследования «Экосистема разработки в 2024 году», и мы можем опираться на ответы на следующие вопросы этого исследования:

  • Укажите свою страну или регион
  • Какими языками программирования вы пользовались за последние 12 месяцев?

Из всех респондентов, указавших США как свою страну, долю разработчиков в США, использующих Python, можно оценить как взвешенную долю тех респондентов, которые указали Python в качестве языка программирования.

Тогда примерное число разработчиков, работающих с Python в США в 2024 году, можно вычислить следующим образом:

SizeUsaPython = ShareUsaPython х DevPopulationUSA

Ограничения метода

У используемой нами методологии есть ряд ограничений.

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

Если информация за какой-то год отсутствует, мы используем самые свежие доступные данные. Для некоторых стран данных нет, их необходимо заменить или очистить.

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

Числа представляют собой лишь наиболее вероятное значение (усредненный прогноз), их не следует рассматривать как точную величину. Исходя из результатов ретроспективного тестирования модели, истинные значения могут отличаться от прогноза в среднем на 14% (показатель MAPE — средняя абсолютная ошибка в процентах). Это дает представление о том, насколько сильно истинное значение может отличаться от прогноза на панели мониторинга.

Калькулятор зарплат

Калькулятор зарплат основан на данных, собранных в рамках нашего ежегодного исследования «Экосистема разработки». Мы попросили респондентов указать свои доходы до налогов, включая бонусы. Затем эти данные были преобразованы в годовую зарплату в долларах США до вычета налогов.

У методологии калькулятора зарплат есть ряд ограничений:

  • Факторы, влияющие на зарплату, могут сильно зависеть от должности. Мы получаем ответы от людей, занимающих разные позиции (дизайнеры, руководители проектов, менеджеры продуктов и т. д.), и для точной оценки зарплат по этим должностям у нас недостаточно данных. Поэтому калькулятор показывает только зарплаты профессиональных программистов (штатных сотрудников с профессиональным опытом программирования).
  • У калькулятора зарплат ограничен выбор фильтров по странам и языкам программирования, поскольку исследование дает репрезентативные данные только для некоторых стран и языков. Например, в списке стран нет Австрии, так как у нас недостаточно данных по этой стране для точной оценки.