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


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



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


Вопреки распространённому представлению о том, что большинство разработчиков — самоучки, статистика показывает, что у 62% профессиональное компьютерное образование. Впрочем, на втором слайде видно, что сами разработчики оценивают важность формального образования как правило невысоко.
Пол
Традиционно даже в западном мире среди разработчиков мало женщин, максимум 11% в США.
Но интереснее график распределения соотношения полов по специальности:
По вертикальной оси отложено, во сколько раз число мужчин превышает число не-мужчин (сюда включены гендерные меньшинства). По горизонтали число проголосовавших. Пунктирная линия: соотношение в общем пуле проголосовавших. Можно сказать, что специальности вниз от пунктирной линии чаще выбираются женщинами, а специальности вверх — реже. Либо другая интерпретация: в вакансиях по этим специальностям реже/чаще отказывают женщинам.
Мы видим, что верхняя половина графика тяготеет к управленческим и административным специальностям, а в разработке к «тяжелым» вещам с более сложными языками программирования (бэкенд, геймдев, нативная мобильная разработка, десктоп-приложения). Нижняя половина графика: исследовательские роли, аналитика, работа с данными.
На мой субъективный взгляд у женщин лучше получается работа с информацией и исследования, а у мужчин — работа с алгоритмами и структурами. Кстати, этот график намекает на то, что датасаенс и ML — абсолютно не алгоритмическая специальность, что звучит парадоксально, если не думать о том, что в ML почти всегда используются готовые существующие наработки, которые ML-щики применяют просто как чёрные ящики.
Технологии
Самый интересный блок, в котором мы увидим, на каких языках люди пишут на самом деле, какие любят, а какие ненавидят.
Наиболее используемые языки
Не стоит путать с наиболее любимыми (этот график будет ниже). Я, например, использую JavaScript более чем в половине проектов, но почти ненавижу его. Как видно, большинство так или иначе тоже вынуждено его использовать. К сожалению, из этой ловушки мы в ближайшие десятилетия вряд ли выберемся.
Показательна ступенька между C и Go. Выше этой линии идут проверенные временем мастодонты рынка, кроме, пожалуй, TypeScript. Ниже — хипстерская новизна или нишевые старички. В целом, если названия языка нет в этом списке, то он никому не нужен, и учить его можно только для прикола.
А вот тот же график предыдущего года:
Мы видим, что Java сдаёт позиции. На мой взгляд это вызвано консерватизмом авторов языка и нежеланием следовать за развитием технологий, а также появлением более удобных и современных альтернатив.
Просадка PHP и других стариков будет расти и дальше. Заметен ощутимый скачок Kotlin, Rust, немного Go — люди вовлекаются в изучение этих технологий. И очень видимый рост TypeScript, Dart — то есть люди ищут альтернативы для JavaScript. Ну и видимое снижение Objective-C и Swift — нативная мобильная разработка устойчиво проигрывает вебу.
Фреймворки


В веб-фреймворках по сравнению с прошлым годом jQuery и Angular упал, а React и Vue выросли, что ожидаемо: все пытаются делать на удобных реактивных инструментах, но часто связаны легаси.
В остальных фреймворках (второй слайд) Node.js ожидаемо лидирует — ничто другое не позволяет писать кроссплатформенные программы произвольной сложности с таким низким порогом вхождения. Второе и третье место по-прежнему занимают .NET / .NET Core, но проценты потихоньку утекают от первого к второму. Опять же, инертность и легаси не позволяют сделать это мгновенно. .NET (Core) тоже является универсальной кроссплатформенной технологией для написания всего, чего угодно, только с поддержкой мощной системы типов и полноценным ООП, позволяющими выстраивать сложную архитектуру. Уверен, что популярность Core будет только расти.
Падение Xamarin и удвоение Flutter косвенно подтверждают вывод о том, что веб выигрывает у нативной разработки на мобильных устройствах. Кстати, на этом фоне стоит отметить падение Cordova: вроде это веб, но фреймворк до сих пор чудовищно неудобен и застрял в консервативных яслях пятилетней давности. Думаю, что его место займёт Capacitor.
Базы данных
Комментировать особо нечего, такая картина сохраняется давно. SQL правит балом и не думает снижаться. Из NoSQL решений Mongo далеко впереди остальных.
Платформы
На первом слайде платформы, под которые и с использованием которых разработчики пишут. На втором слайде — операционные системы на основной рабочей машине.


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



Первый слайд — самые любимые языки программирования. Мы видим, что многие остались довольны 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.
Веб-фреймворки



Первый слайд — самые любимые веб-фреймворки. На первом месте ASP.NET Core: бесспорно лучший способ делать веб-бэкенд в 2020 году. По комбинации удобства, скорости, современности и количеству инструментария с ним не сравнится ничто.
Второй слайд — самые ненавистные веб-фреймворки. Старьё и легаси вверху, люди хотят с этого слезать. Следует не путать ASP.NET и ASP.NET Core в этом месте. Core — новая, облегчённая, кроссплатформенная версия, независимая от Windows.
Третий слайд — самые желанные к изучению веб-фреймворки. Те, кто сидит на jQuery, мечтают о React. Те, кто сидит на React, мечтают о Vue. Те, кто ничего не знает про веб, хотят выучить Angular, потому что где-то про него слышали.
Остальные фреймворки



Первый слайд — самые любимые фреймворки. На первом месте .NET Core, потому что он позволил использовать один из лучших языков на планете (C#) везде, во множестве проектов, и люди этим очень довольны. Ожидаемо высоко Flutter, как попытка делать приложения под телефоны, кроссплатформенно, но не на JavaScript.
Второй слайд — самые ненавистные фреймворки. Я не всё здесь знаю, но высокие места Cordova и Xamarin я уже объяснил выше. Кстати, очень жаль Xamarin — у них есть удобный язык и нативная кроссплатформенность, но почему-то сделать из этого классный простой инструмент они так и не смогли.
Третий слайд — самые желанные к изучению фреймворки. Те, кто ещё не пишет бэкенд, хотят начать с Node.js, что ожидаемо. Ещё люди хотят изучать всякие нейросети и ML, поэтому Tensorflow и Torch высоко. Присутствие React Native и Flutter тоже очевидно.
Другие технологии
Самые любимые, ненавистные и желанные базы данных я не буду подробно комментировать. Скажу лишь, что самая желанная — MongoDB, о чём можно догадаться. Для многих проектов NoSQL-архитектура подходит гораздо лучше, чем реляционная, просто из-за инертности и консерватизма её не всегда внедряют, осложняя этим и жизнь и разработчикам и пользователям.
В ненавистных БД предсказуемо старьё многолетней давности.
Самые любимые, ненавистные и желанные платформы. Топ по ненависти это WordPress. Странные люди — сначала делают проект с использованием конструктора, а потом плюются. Очевидно же, но нужно брать какую-то более полноценную технологию.
Ещё в ненавистных платформах высоко Heroku (авторы не расширяют функциональность, хотя давно пора) и Arduino (авторы удивительно не реализуют мощнейший потенциал платформы и не создают даже базовую сервис-оснастку для столько популярного продукта, это преступление).
Коммуникационные платформы — очевидно, в топе GitHub, Slack и Jira, ничего нового.
Связь между технологиями
Зарплаты
На первом слайде что люди думают о зарплатах разработчиков в зависимости от технологий. Зарплаты в тысячах долларов в год. На втором настоящие зарплаты.


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


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


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