StackOverflow Developer Survey 2020 — что на самом деле думают разработчики со всего мира

Каждый год StackOverflow проводит масштабный опрос разработчиков со всего мира об их профессиональной (и немного — личной) жизни. Возможно, ответы 60000 человек в масштабах планеты не являются полностью репрезентативными (на каждого сидящего в Долине разнеженного программиста-американца может приходиться десяток индусов, которые работают совсем по-другому), но отражают тенденции рынка разработки и технологических решений на нём.

Взглянем на результаты 2020 года.

Соотношение количества проголосовавших по регионам
Карта с долей проголосовавших по странам
1 of 2
Соотношение количества проголосовавших по регионам

Профиль разработчика

StackOverflow Developer Survey 2020 — что на самом деле думают разработчики со всего мира, image #3

Каждый ответивший мог выбирать несколько вариантов, что очевидно из суммы всех процентов. Две большие группы идентифицируют себя, как бэкенд- и фуллстек-разработчики соответственно. Большинство приложений это веб, большинство требуют обработки на сервере, но не все требуют интерфейс. Из личного могу добавить, что бэкенд-разработчику обычно не слишком сложно (хоть и не слишком приятно) написать фронтенд на нетипизированном однопоточном JavaScript, а вот обратное требует дополнительного обучения и усилий.

Ещё 78.2% ответивших указали, что программирование, помимо работы, является одним из их хобби. Странно, почему так мало.

Опыт в разработке и возраст

Количество лет изучения программирования
Количество лет профессиональной работы программистом
Возраст
1 of 3
Количество лет изучения программирования

Очередной раз развеиваем миф о том, что программирование это удел молодых. Даже если человек начинал заниматься этим в 14-16 лет, в среднем сейчас ему 25-30, а не 18-22, как некоторые считают.

На втором слайде время профессиональной работы в айти, и вот тут уже процент молодых специалистов высокий. Всё логично: сегодняшние программисты 25-35 пошли на работу, когда им было около 20-25. Третий слайд с возрастом показывает это распределение.

Там есть ещё график распределения профессионального опыта в зависимости от должности, можете его посмотреть, если интересно, но там всё предсказуемо: руководящие и управленческие должности как правило занимают люди с большим опытом.

Образование

Распределение по типам образования в бытность студентами
Оценка важности формального образования
1 of 2
Распределение по типам образования в бытность студентами

Вопреки распространённому представлению о том, что большинство разработчиков — самоучки, статистика показывает, что у 62% профессиональное компьютерное образование. Впрочем, на втором слайде видно, что сами разработчики оценивают важность формального образования как правило невысоко.

Пол

Традиционно даже в западном мире среди разработчиков мало женщин, максимум 11% в США.

Но интереснее график распределения соотношения полов по специальности:

StackOverflow Developer Survey 2020 — что на самом деле думают разработчики со всего мира, image #9

По вертикальной оси отложено, во сколько раз число мужчин превышает число не-мужчин (сюда включены гендерные меньшинства). По горизонтали число проголосовавших. Пунктирная линия: соотношение в общем пуле проголосовавших. Можно сказать, что специальности вниз от пунктирной линии чаще выбираются женщинами, а специальности вверх — реже. Либо другая интерпретация: в вакансиях по этим специальностям реже/чаще отказывают женщинам.

Мы видим, что верхняя половина графика тяготеет к управленческим и административным специальностям, а в разработке к «тяжелым» вещам с более сложными языками программирования (бэкенд, геймдев, нативная мобильная разработка, десктоп-приложения). Нижняя половина графика: исследовательские роли, аналитика, работа с данными.

На мой субъективный взгляд у женщин лучше получается работа с информацией и исследования, а у мужчин — работа с алгоритмами и структурами. Кстати, этот график намекает на то, что датасаенс и ML — абсолютно не алгоритмическая специальность, что звучит парадоксально, если не думать о том, что в ML почти всегда используются готовые существующие наработки, которые ML-щики применяют просто как чёрные ящики.

Технологии

Самый интересный блок, в котором мы увидим, на каких языках люди пишут на самом деле, какие любят, а какие ненавидят.

Наиболее используемые языки

StackOverflow Developer Survey 2020 — что на самом деле думают разработчики со всего мира, image #10

Не стоит путать с наиболее любимыми (этот график будет ниже). Я, например, использую JavaScript более чем в половине проектов, но почти ненавижу его. Как видно, большинство так или иначе тоже вынуждено его использовать. К сожалению, из этой ловушки мы в ближайшие десятилетия вряд ли выберемся.

Показательна ступенька между C и Go. Выше этой линии идут проверенные временем мастодонты рынка, кроме, пожалуй, TypeScript. Ниже — хипстерская новизна или нишевые старички. В целом, если названия языка нет в этом списке, то он никому не нужен, и учить его можно только для прикола.

А вот тот же график предыдущего года:

Наиболее используемые языки 2019 года
Наиболее используемые языки 2019 года

Мы видим, что Java сдаёт позиции. На мой взгляд это вызвано консерватизмом авторов языка и нежеланием следовать за развитием технологий, а также появлением более удобных и современных альтернатив.

Просадка PHP и других стариков будет расти и дальше. Заметен ощутимый скачок Kotlin, Rust, немного Go — люди вовлекаются в изучение этих технологий. И очень видимый рост TypeScript, Dart — то есть люди ищут альтернативы для JavaScript. Ну и видимое снижение Objective-C и Swift — нативная мобильная разработка устойчиво проигрывает вебу.

Фреймворки

Веб-фреймворки
Прочие фреймворки
1 of 2
Веб-фреймворки

В веб-фреймворках по сравнению с прошлым годом jQuery и Angular упал, а React и Vue выросли, что ожидаемо: все пытаются делать на удобных реактивных инструментах, но часто связаны легаси.

В остальных фреймворках (второй слайд) Node.js ожидаемо лидирует — ничто другое не позволяет писать кроссплатформенные программы произвольной сложности с таким низким порогом вхождения. Второе и третье место по-прежнему занимают .NET / .NET Core, но проценты потихоньку утекают от первого к второму. Опять же, инертность и легаси не позволяют сделать это мгновенно. .NET (Core) тоже является универсальной кроссплатформенной технологией для написания всего, чего угодно, только с поддержкой мощной системы типов и полноценным ООП, позволяющими выстраивать сложную архитектуру. Уверен, что популярность Core будет только расти.

Падение Xamarin и удвоение Flutter косвенно подтверждают вывод о том, что веб выигрывает у нативной разработки на мобильных устройствах. Кстати, на этом фоне стоит отметить падение Cordova: вроде это веб, но фреймворк до сих пор чудовищно неудобен и застрял в консервативных яслях пятилетней давности. Думаю, что его место займёт Capacitor.

Базы данных

StackOverflow Developer Survey 2020 — что на самом деле думают разработчики со всего мира, image #14

Комментировать особо нечего, такая картина сохраняется давно. SQL правит балом и не думает снижаться. Из NoSQL решений Mongo далеко впереди остальных.

Платформы

На первом слайде платформы, под которые и с использованием которых разработчики пишут. На втором слайде — операционные системы на основной рабочей машине.

Платформы, под которые пишут
Операционные системы, на которых пишут
1 of 2
Платформы, под которые пишут

Вопреки представлениям маководов, MacOS не является ни основной платформой в качестве цели разработки и среды запуска, ни самой популярной ОС для разработчиков. Большинство сидит на Windows и пишет под Linux, Windows и в Docker.

Персональное отношение к языкам программирования

Самые любимые у разработчиков языки программирования
Самые ненавистные разработчиками языки программирования
Самые желаемые к изучению разработчиками языки программирования
1 of 3
Самые любимые у разработчиков языки программирования

Первый слайд — самые любимые языки программирования. Мы видим, что многие остались довольны Rust и TypeScript. Ещё высоко модные новинки вроде Go и Kotlin, Dart. Я ничего не знаю про язык Julia — судя по описанию это в каком-то смысле новый Python с улучшенной производительностью.

JavaScript всё ещё высоко — я объясняю это присутствием большого количества людей, которые не пробовали ничего, кроме него. Косвенно это подтверждается высоким показателем JavaScript как одного из наиболее желанных к изучению языков (третий слайд) — люди рады, что научились программировать.

Второй слайд — самые ненавистные языки. Выше всего VBA (оно понятно, язык ужасен) и Objective-C (Apple в очередном приступе синдрома Not Invented Here попытались сделать красиво, а сделали неудобно). Дальше идёт всякое старьё вроде PHP, C, Perl, Assembly, на которых в 2020 году писать можно только по принуждению или из-за лени учить новое. На мой персональный взгляд незаслуженно в этом списке только Ruby — его, скорее всего, не поняли.

Третий слайд — самые желанные для изучения языки. JavaScript высоко, потому что это мейнстримный способ делать интерфейсы, и все, кто ещё не делает интерфейсы, но хочет (а таких много), желают выучить JS. Если они уже пишут на чём-то другом, их ждёт разочарование и Стокгольмский синдром.

Ещё высоко модный Python (я тоже хотел его выучить, пока не попробовал) и уже ожидаемые тут Go, Rust, Kotlin, о которых везде говорят. Ну и TypeScript для тех, кто устал от проблем отсутствия типов в JS.

Веб-фреймворки

Самые любимые веб-фрейморки
Самые ненавистные веб-фрейморки
Самые желанные веб-фрейморки
1 of 3
Самые любимые веб-фрейморки

Первый слайд — самые любимые веб-фреймворки. На первом месте ASP.NET Core: бесспорно лучший способ делать веб-бэкенд в 2020 году. По комбинации удобства, скорости, современности и количеству инструментария с ним не сравнится ничто.

Второй слайд — самые ненавистные веб-фреймворки. Старьё и легаси вверху, люди хотят с этого слезать. Следует не путать ASP.NET и ASP.NET Core в этом месте. Core — новая, облегчённая, кроссплатформенная версия, независимая от Windows.

Третий слайд — самые желанные к изучению веб-фреймворки. Те, кто сидит на jQuery, мечтают о React. Те, кто сидит на React, мечтают о Vue. Те, кто ничего не знает про веб, хотят выучить Angular, потому что где-то про него слышали.

Остальные фреймворки

Самые любимые фрейморки
Самые ненавистные фрейморки
Самые желанные фрейморки
1 of 3
Самые любимые фрейморки

Первый слайд — самые любимые фреймворки. На первом месте .NET Core, потому что он позволил использовать один из лучших языков на планете (C#) везде, во множестве проектов, и люди этим очень довольны. Ожидаемо высоко Flutter, как попытка делать приложения под телефоны, кроссплатформенно, но не на JavaScript.

Второй слайд — самые ненавистные фреймворки. Я не всё здесь знаю, но высокие места Cordova и Xamarin я уже объяснил выше. Кстати, очень жаль Xamarin — у них есть удобный язык и нативная кроссплатформенность, но почему-то сделать из этого классный простой инструмент они так и не смогли.

Третий слайд — самые желанные к изучению фреймворки. Те, кто ещё не пишет бэкенд, хотят начать с Node.js, что ожидаемо. Ещё люди хотят изучать всякие нейросети и ML, поэтому Tensorflow и Torch высоко. Присутствие React Native и Flutter тоже очевидно.

Другие технологии

Самые любимые, ненавистные и желанные базы данных я не буду подробно комментировать. Скажу лишь, что самая желанная — MongoDB, о чём можно догадаться. Для многих проектов NoSQL-архитектура подходит гораздо лучше, чем реляционная, просто из-за инертности и консерватизма её не всегда внедряют, осложняя этим и жизнь и разработчикам и пользователям.

В ненавистных БД предсказуемо старьё многолетней давности.

Самые любимые, ненавистные и желанные платформы. Топ по ненависти это WordPress. Странные люди — сначала делают проект с использованием конструктора, а потом плюются. Очевидно же, но нужно брать какую-то более полноценную технологию.

Ещё в ненавистных платформах высоко Heroku (авторы не расширяют функциональность, хотя давно пора) и Arduino (авторы удивительно не реализуют мощнейший потенциал платформы и не создают даже базовую сервис-оснастку для столько популярного продукта, это преступление).

Коммуникационные платформы — очевидно, в топе GitHub, Slack и Jira, ничего нового.

Связь между технологиями

Просто любопытный граф
Просто любопытный граф

Зарплаты

На первом слайде что люди думают о зарплатах разработчиков в зависимости от технологий. Зарплаты в тысячах долларов в год. На втором настоящие зарплаты.

Что люди думают о зарплатах разработчиков на разных языках
Актуальные зарплаты разных специалистов
1 of 2
Что люди думают о зарплатах разработчиков на разных языках

Первый слайд — все думают, что на Perl пойдут писать добровольно только за кучу денег, а для Scala и Rust нужно быть очень умным.

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

В США зарплаты вдвое больше, чем в среднем по миру.
Зарплаты в зависимости от опыта и специальности
Зарплаты в зависимости от опыта и языка
1 of 2
Зарплаты в зависимости от опыта и специальности

Интересный график — зарплаты в зависимости от опыта. Первый слайд — по специальностям, а второй — по языкам.

То, что выше выделенной зоны, можно интерпретировать как переоценённость или как более высокую сложность специальности. То, что ниже — наоборот. Как я уже сказал, переоценены датасаентисты, а девопсам платят за повышенный стресс. Учителя недооценены даже на западе и в айти. И пока рынок не распробовал разработчиков на Dart из-за небольшого проникновения технологии, но это, скорее всего, изменится.

Как видим, разработчики на легаси не только вынуждены писать легаси, но им ещё и денег не платят. Скорее всего, это люди, которые не смогли или не захотели переучиваться, и легаси задёшево для них единственный способ оставаться в IT.

Трудоустройство

Основные причины, по которым разработчики ищут новую работу
Ключевые показатели в фирме-работодателе для разработчиков
1 of 2
Основные причины, по которым разработчики ищут новую работу

Два важных графика. На первом мы видим, что разработчик ищет новую работу, если ему мало платят или если надоело работать со старьём.

А на втором видим, что работать скорее пойдёт туда, где интересные технологии и либо классный офис, либо удалёнка с гибким графиком. Когда-нибудь остальной бизнес, а не только IT, тоже дойдёт до откровения, что помимо денег людям нужно ещё и давать интересную работу и удобные условия.

Кстати, есть вариант второго графика с делением по полу, и для женщин главный критерий — офисная культура, а не технологии. Подозреваю, это связано с харрасментом и дискриминацией, с которыми в офисах сталкиваются в основном женщины.

Заключение

Дальше на сайте идёт исследование присутствия на StackOverflow, с чем вы можете ознакомиться лично. В целом тенденции очевидны: везде, где можно, переходят на веб, во фронтенде пытаются уйти от JavaScript с помощью TypeScript, Flutter, Dart. В остальной разработке все оценили .NET Core, ненавидят легаси и учат (либо хотят выучить) набирающие популярность языки и технологии: Go, Rust, Kotlin.

650 views·5 shares