На Stack Overflow Jobs каждый может опубликовать собственную Developer Story, чтобы поделиться достижениями и поспособствовать карьерному росту. При публикации можно добавить к статье теги, соответствующие языкам и технологиям, с которыми вы бы хотели работать и с которыми бы не хотели:
Это даёт нам возможность изучить мнения сотен тысяч разработчиков. Есть много способов измерить популярность языка. Например, мы часто использовали для изучения трендов статистику визитов на Stack Overflow или просмотров вопросов. Но данные о тегах — уникальная возможность посмотреть, что людям не нравится, когда у них есть возможность сказать об этом в резюме.
(Некоторый анализ я публиковал в личном блоге два года назад, но эта статья дополнена более свежими данными и бóльшим количеством иллюстраций).
Языки программирования
В качестве меры измерения посмотрим, как соотносится во всех резюме доля тегов Dislike по сравнению с тегами Like для каждого конкретного языка. То есть 50% означает, что тег не нравится в точности так же часто, как и нравится, в то время как 1% означает, на каждые 99 человек, кто поставил лайк, нашёлся один с отрицательной оценкой. (Для оценки средних значений мы применяли эмпирический метод Байеса, который я описывал в этой статье, а он рассчитывает доверительный интервал с уровнем доверия 95%).
Для начала посмотрим на список языков программирования (в отличие от платформ вроде Android или библиотек типа jQuery), у которых минимум 2000 упоминаний в Developer Stories.
В списке самых нелюбимых языков с большим отрывом лидируют Perl, Delphi и VBA. За ними следуют PHP, Objective-C, Coffeescript и Ruby. Наши разработчики были особенно рады видеть, что R — самый любимый язык программирования по соотношению лайков и дислайков.
Если вы читали какие-то из наших статей по росту и падению популярности конкретных языков, то могли обратить внимание, что наименьшее количество дислайков обычно сопутствует языкам, чья популярность быстро растёт, таким как R, Python, Typescript, Go и Rust (мы отдельно исследовали Python и R) и все они относятся к числу языков с наиболее однодушными оценками. Точно так же многие из языков с большой долей дислайков — Perl, Objective-C и Ruby — одновременно ранее были замечены среди языков, у которых количество тегов на сайте быстрее всего снижается.
Это можно проверить, сравнив размер и рост для каждого языка с процентом тех, кто ставит ему дислайк. На теплокарте оранжевый цвет соответствует языкам с наибольшим количеством дислайков. Чтобы наш анализ был совместим с последними несколькими статьями, ограничим статистику только странами с высоким доходом (такие как США, Великобритания, Германия и Канада), где популярность языков немного отличается от стран с низким доходом.
Обычно есть взаимосвязь между ростом популярности тега и долей дислайков для него. Почти все языки, если они не нравятся более чем 3% пользователям, одновременно демонстрируют снижение по трафику Stack Overflow (кроме сильно противоречивого VBA, который стабилен или слегка растёт). А все языки с самой большой долей положительных тегов — R, Rust, Typescript и Kotlin — одновременно принадлежат к числу самых быстрорастущих тегов (Typescript и Kotlin растут так быстро, что не поместились на диаграмму).
Из общей тенденции выбивается функциональный язык Clojure; почти никто не выражает к нему неприятие, но он находится среди наиболее быстро падающих по трафику (падение по количеству визитов на сайте с вопросами началось примерно в последний год). Ещё одно исключение — MATLAB, популярность которого тоже снижается, хотя никто не ставит ему дислайки. Это может указывать на ограничение данных для измерения настроений: хотя у любого веб-разработчика может быть мнение о PHP, C# или Ruby, но у людей вне сферы анализа данных нет причины выражать мнение насчёт MATLAB. (Вероятно, это тоже может быть причиной, почему R так редко получает дислайки).
Мы не обязательно предполагаем наличие причинно-следственной связи, когда нелюбовь части программистов к некоторым языкам ведёт к снижению популярности этих языков. Есть и другая вероятность: людям комфортнее ставить дислайк и проявлять нежелание работать с языком, которая уже теряет популярность. Возможно, проявляют такое нежелание люди, которые раньше писали на этом языке, но больше не хотят. То есть происходит естественный процесс, когда «заменённые» технологии попадают в поле Dislike в резюме.
Самые любимые и нелюбимые теги
Предыдущий анализ касался только языков программирования, но не операционных систем, платформ или библиотек. Какие же самые нелюбимые технологии в целом? Чтобы сконцентрироваться только на больших технологиях, по которым у нас достаточно данных, мы ограничили выборку технологиями, которые упоминаются минимум 1000 раз.
Среди лидеров несколько технологий Microsoft, в частности, Internet Explorer и Visual Basic, а также общий тег “Microsoft” (“Apple” тоже попала в список, хотя её не так катастрофически ненавидят). У нас хорошие новости для большинства из тех, кто проявил неприятие работе с Flash. Более старые языки, такие как COBOL, Fortran и Pascal, тоже попали в список.
Важно ещё раз подчеркнуть, что здесь нет оценки самих технологий, их качества или популярности. Это просто оценка, какие технологии вызывают сильные негативные чувства у некоторой части разработчиков, которые не против выразить своё отношение публично.
Можно также изучить самые популярные технологии, которые почти никогда не получают дислайков. (На этот раз, поскольку лайки встречаются на порядок чаще дислайков, включим в выборку технологии, упомянутые минимум 10 000 раз).
Git может стать головной болью для многих разработчиков (как определённо он является для меня!), но люди редко признают это в своих резюме, и это один из самых однозначно лайкнутых тегов в наших Developer Stories. В список попал R, но здесь это не единственный тег из сферы data science. Машинное обучение получило одобрение 23 тыс. человек и очень редко попадало в категорию неодобряемых технологий. Теги вроде Python-3.X, CSS3 и HTML5 могут указывать на то, что разработчики редко указывают свою нелюбовь к конкретной версии технологии (даже если указывают). И конечно, jQuery популярен как всегда на Stack Overflow.
Сеть с полярными тегами
Мы можем поместить эти теги на одной картинке, объединив их в сеть. В недавней статье Юлия Силге показала, как построить сеть технологий, которая представляет всю индустрию программного обеспечения. Если обозначить цветом уровень нелюбви к каждой технологии, то можно определить, какие части экосистемы вызывают больше противоречий, чем другие.
Если наложить теги на области экосистемы, то эта сеть показывает, какие типы тегов склонны к противоречиям. Есть кластеры таких тегов, связанных с Microsoft (с ядрами вокруг C# и .NET), PHP (вместе с WordPress и Drupal) и мобильной разработкой (в частности, Objective-C). Внизу кластера операционных систем (справа внизу) можно увидеть, что у систем вроде OS X, а особенно Windows есть недоброжелатели, а у Linux, Ubuntu и Unix нет.
Конкуренты
Если кто-то любит определённый тег, существуют ли другие теги, которому он с большей вероятностью выразит нелюбовь?
Это можно измерить, используя фи-коэффициент между появлениями конкретных тегов. (При вычислении этих корреляции мы учитываем только людей, которые поставили хотя бы один дислайк).
Так выявляются некоторые «конкуренты в софтверной экосистеме: Linux и OS X против Windows, Git против SVN, vim против emacs и (к моему удивлению) R против SAS. По большей мере эти пары представляют собой не «противоположные» технологии, а разные подходы к решению одних и тех же проблем. Многие из них указывают на переход от популярной в прошлом технологии к более современной (Git заменяет SVN, JSON заменяет XML, C# заменяет VB). Это имеет смысл в том смысле, как люди составляют резюме; для разработчиков типично указывать, что они не хотят работать с чем-то, что считают устаревшим.
Вывод
Мне не интересно участвовать в каких то «войнах языков программирования» и я не сужу пользователей, которые указывают, с какими технологиями не желают работать. Большая поляризация мнений о технологиях Microsoft часто подталкивает меня поделиться личным опытом. Я всю жизнь работал на Mac и UNIX и почти весь опыт программирования в университете и аспирантуре был на Python и R. Несмотря на это, я с удовольствием присоединился к компании со стеком .NET, и рад, что сделал это — потому что мне нравились и коллеги, и продукт, и данные. Не могу сказать за других, но лично я рад, что определился в том, какую работу мне интересно делать, а не в том, чего хотел бы избежать.
Автор: m1rko