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

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


2020-06-01 00:38

разработка по

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

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

Соотношение количества проголосовавших разработчиков по регионам http://vuejs24.ru

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

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

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

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

Количество лет изучения программирования

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

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

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

Образование

Распределение по типам образования в бытность студентами

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

Пол

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

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

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

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

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

Технологии

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

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

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

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

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

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

Мы видим, что 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.


Источник: m.vk.com

Комментарии: