Методология
Участники опроса
В исследовании экосистемы разработки 2020 приняли участие более 34 000 человек. Этот отчет основан на ответах, полученных от 19 696 разработчиков из 18 стран. Данные были выравнены методом взвешивания по нескольким критериям, как описано далее. Каждая диаграмма в отчете основывается как минимум на 300 ответах, полученных по каждому пункту.
Снижение нагрузки на опрашиваемых
Чтобы сократить время прохождения опроса, некоторые блоки были доступны только части респондентов. Из шести следующих разделов каждому респонденту показывались только два:
- Непрерывная интеграция, баг-трекинг, управление версиями
- Тестирование
- DevOps и хостинг
- Статический анализ, открытый исходный код и т. д.
- Образование
- Кросс-платформенность и микросервисы
По нашей схеме тем, кто, например, указал в качестве должности «тестировщик/QA-инженер» или «DevOps-инженер / разработчик инфраструктуры», в любом случае был показан раздел, связанный с их работой, и еще один раздел, выбранный случайным образом.
Таргетинг
Чтобы пригласить потенциальных респондентов принять участие в опросе, мы использовали рекламу в Twitter, Facebook, Instagram, Quora, ВКонтакте, Codefund, Baidu и собственные каналы коммуникации.
В рекламных кампаниях таргетинг проводился в два этапа. Сначала реклама была нацелена на конкретные страны, а затем — на разработчиков, использующих редкие языки программирования, для уменьшения дисперсии в разделах соответствующих языков. Мы таргетировали пользователей Ruby, Scala, Rust, Swift и Objective-C. Кроме того, просили респондентов делиться ссылкой на опрос с коллегами.
Страны
Мы собрали достаточно крупные выборки данных из Аргентины, Беларуси, Бразилии, Великобритании, Германии, Индии, Испании, Канады, Китая, Мексики, Польши, России, США, Турции, Украины, Франции, Южной Кореи и Японии, чтобы считать суммарную выборку репрезентативной для оценки текущего состояния экосистемы разработки. Около 70% всех разработчиков в мире находятся в этих странах.
Локализация
Чтобы свести к минимуму потенциальную предвзятость в пользу англоговорящих респондентов, опрос был переведен на 8 языков: испанский, китайский, корейский, немецкий, португальский, турецкий, французский и японский.
Снижение погрешности выборки
Чтобы свести к минимуму систематическую погрешность, мы опирались на данные, взвешенные на основании ответов респондентов, привлеченных посредством рекламы в Twitter, Facebook, Instagram, Quora, ВКонтакте, Codefund, Baidu и от рефералов респондентов.
Мы учитывали источник каждого респондента в отдельности, чтобы получить результаты на основе процедур взвешивания. Взвешивание выполнялось в три этапа — так мы смогли составить наименее предвзятое представление о мировом сообществе разработчиков.
Первый этап взвешивания: совокупность профессиональных разработчиков в 18 странах
На первом этапе мы собрали ответы, полученные при таргетинге стран, и применили к этим данным наши оценочные расчеты количества профессиональных разработчиков в каждой стране.
Сначала мы рассматривали ответы профессиональных разработчиков и работающих студентов, которые прошли опрос благодаря рекламе, размещенной в социальных сетях в 18 целевых странах, а также данные респондентов, получивших ссылку на опрос от коллег. Мы взвесили все эти ответы в соответствии с нашей оценкой численности профессиональных разработчиков в этих странах. Это гарантировало, что распределение ответов будет соответствовать количеству профессиональных разработчиков в каждой стране.
Второй этап взвешивания: соотношение трудоустроенных и нетрудоустроенных разработчиков
На втором этапе мы приняли, что доля студентов и безработных респондентов (которые нашли нас через те же рекламные кампании) в каждой стране составляет 17%. Мы сделали это для обеспечения согласованности с методологией предыдущего года, поскольку это единственная имеющаяся у нас оценка их совокупности.
В результате мы получили 10 116 ответов из внешних источников, взвешенных по стране и статусу занятости.
Третий этап взвешивания: вид занятости, языки программирования, использование продуктов JetBrains
Третий этап был довольно сложным, так как включал в себя расчеты, полученные путем решения систем уравнений. Мы взяли 10 116 взвешенных ответов. Отдельно для разработчиков из каждой страны, помимо статуса занятости, мы рассчитали доли каждого из более чем 30 языков программирования, а также доли тех, кто ответил «Я в настоящее время использую продукты JetBrains» и «Я никогда не слышал о продуктах JetBrains». Эти доли стали постоянными в наших уравнениях.
Затем нам потребовалось учесть еще две группы ответов, полученных из других источников: через внутренние каналы JetBrains, например аккаунты JetBrains в социальных сетях и нашу панель исследований, а также через рекламные кампании, ориентированные на пользователей определенных языков программирования. Так мы получили еще 9 580 ответов, которые тоже взвесили соответствующим образом.
Решение системы из более чем 30 линейных уравнений и неравенств
Мы составили систему из более чем 30 линейных уравнений и неравенств, которая описывала:
- Весовые коэффициенты респондентов (например, Пьер из нашей выборки представляет 180 разработчиков из Франции).
- Конкретные значения их ответов (Пьер использует C++, трудоустроен на полную ставку и никогда не слышал о JetBrains).
- Необходимые соотношения между ответами (например, 27% разработчиков использовали C++ за последние 12 месяцев и т. д.).
Чтобы решить эту систему уравнений с минимальной дисперсией весовых коэффициентов (что важно!), мы использовали двойственный метод Гольдфарба — Иднани (1982, 1983), который помог нам рассчитать оптимальные индивидуальные весовые коэффициенты респондентов.
Остаточная погрешность
Несмотря на эти меры, нельзя исключить определенную степень предвзятости, поскольку пользователи JetBrains в среднем могли быть более склонны пройти этот опрос.
Кроме того, экосистема постоянно развивается, и возможны некоторые отклонения данных, несмотря на все наши усилия. Например, доля пользователей Kotlin, компилирующих приложения под JVM, увеличилась в наших данных из-за преобладания пользователей Kotlin/JVM в наших источниках, хотя в целом для языка Kotlin такие изменения не наблюдаются.
Мы обязательно продолжим совершенствовать методологию взвешивания. До встречи в следующем году!
Подберите себе инструмент
Спасибо, что уделили время!
Если результаты исследования показались вам интересными, поделитесь ими с друзьями и коллегами.
Присоединяйтесь к JetBrains Tech Insights Lab
Участвуйте в опросах и UX-исследованиях JetBrains, чтобы помочь нам улучшить наши продукты. Среди участников исследований разыгрываются призы.
Если у вас есть вопросы или пожелания, свяжитесь с нами по адресу surveys@jetbrains.com.