Как многоязычный разработчик программного обеспечения, мне всегда интересно, какой была бы работа, если бы я начал работать в другой стране. Точнее говоря, какие языки программирования я буду использовать, сколько мне будут платить и насколько я буду доволен жизнью там.

Многообещающие ответы на эти вопросы можно найти, изучив Опрос разработчиков Stack Overflow за 2018 год. В опросе более 100 вопросов и около десяти тысяч респондентов со всего мира. Я загрузил данные из Stack Overflow и провёл обработку и анализ данных, чтобы обнаружить некоторые идеи. Вот что я нашел.

Относительная популярность языков программирования, фреймворков и платформ.

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

Итак, вопрос теперь в том, какие языки или фреймворки подходят для определенной страны или региона? Чтобы ответить на этот вопрос, я подсчитываю использование языка, фреймворка и платформы для каждой страны / региона. И чтобы легко представить себе относительную распространенность этих технологий, я сравниваю только страны / районы вокруг Тайваня (где я живу и работаю) плюс Соединенные Штаты. Ниже приведен список, который я использовал для этого анализа:

  1. Тайвань
  2. Япония
  3. Южная Корея
  4. Китай
  5. Сингапур
  6. Гонконг
  7. Соединенные Штаты

Языки программирования

В следующей таблице показана относительная популярность различных языков программирования. Цифры в таблице указывают на различия в использовании языка в стране по отношению ко всему набору данных. Например, процент разработчиков в Китае, использующих язык C, примерно на 2% выше, чем в среднем в мире. Это можно увидеть в ячейке столбца 1 (Китай) и строки 3 (C) в следующей таблице.

Из этой таблицы мы можем найти много интересных фактов об использовании языка, и она послужит справочным материалом, если я захочу переехать в другую страну и продолжить работу в качестве разработчика программного обеспечения. Например, согласно этой таблице, если бы я получил работу в Японии в будущем, мне лучше было бы изучить Ruby или Objective-C, чтобы увеличить свои шансы на прохождение собеседования. Точно так же мне, возможно, потребуется знать Python или Java, если я поеду в Китай и изучу C или Java, если я поеду в Южную Корею.

Фреймворки

Распространенность фреймворков, похоже, имеет некоторую корреляцию с языками программирования. Например, в странах, где Java является основным языком использования, среда Spring имеет высокие темпы принятия. Точно так же, похоже, корреляция между ядром C # и .NET.

В контексте науки о данных значительная часть разработчиков в Сингапуре использует инструменты больших данных, такие как Hadoop и Spark, а разработчики в Китае, Японии и Тайване, похоже, сосредоточены на приложениях или алгоритмах искусственного интеллекта, основанных на использовании Tensorflow.

Платформы

Внедрение платформы также обнаруживает некоторые интересные тенденции. Крупнейшие облачные провайдеры, согласно статье ZDNet, - это AWS, Azure, Google Cloud и IBM Cloud. Из приведенной ниже таблицы видно, что в Китае уровень внедрения ниже, чем у всех вышеупомянутых облачных провайдеров. Это может означать, что либо в Китае уровень внедрения облака ниже, либо он в основном принимает внутренних поставщиков облачных услуг, таких как Alibaba Cloud, что не показано в таблице.

Что касается мобильных устройств, то в Южной Корее относительно высокий уровень внедрения платформы Android. Это может быть связано с тем, что местные производители мобильных устройств, такие как Samsung и LG, продают устройства на базе Android. С другой стороны, показатели внедрения Mac OS и iOS в Японии выше, чем весь набор данных, что означает, что японцы могут отдавать предпочтение электронным устройствам Apple.

Заработная плата и прожиточный минимум

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

Ниже приведена диаграмма, на которой показаны медианные конвертированные зарплаты, стоимость жизни и арендная плата для выбранных стран (10 самых популярных стран пользователей Stack Overflow и стран рядом с Тайванем). Индексы стоимости жизни и арендной платы рассчитываются на основе цен на жизнь и арендной платы в Нью-Йорке, предоставленных NUMBEO.

Вообще говоря, зарплаты разработчиков программного обеспечения выше в странах с более высокой стоимостью жизни, но есть некоторые отклонения от этой зависимости. Во-первых, в таких странах, как Сингапур, Гонконг и Тайвань, уровень заработной платы ниже, чем в странах с аналогичной или даже меньшей стоимостью жизни. Напротив, в США и Австралии зарплаты значительно выше, чем в Японии и Нидерландах, где прожиточный минимум аналогичен. Обратите внимание, что есть страны с размером выборки менее 100. Для дальнейшего улучшения оценки может потребоваться больше отчетов о заработной плате.

Наиболее важные факторы удовлетворенности работой

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

  • Страна
  • Годы программирования (в целом и профессионально)
  • Размер компании
  • Оплата труда
  • Коммуникационные инструменты
  • Используемые технологии (языки, фреймворки, платформы)
  • Методологии

Чтобы решить, какие факторы более важны, можно подобрать модель, используя указанные выше характеристики (Страна, Годы кодирования и т. Д.) И целевые значения (Удовлетворенность работой), а затем изучить параметры модели для более глубокого понимания. Здесь я использую библиотеку под названием feature_selector, которая за кулисами использует LightGBM (древовидная модель) для определения относительной важности функций для удовлетворения от работы. Сообщение в блоге о том, как использовать этот пакет, можно найти здесь.

Ниже приведены результаты по 15 наиболее важным характеристикам удовлетворенности работой. Удивительно, но заработная плата действительно является доминирующим фактором удовлетворения от работы. Я ожидал, что это будет одна из ключевых особенностей, но не такая доминирующая, как показанные здесь результаты.

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

У этого списка нет конца. Другие факторы, такие как страны, операционные системы или инструменты, могут незначительно влиять на удовлетворенность работой, но не очень сильно.

Выводы

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

Между тем зарплаты варьируются от страны к стране. Однако выбор места работы - это не только зарплата. Отдельно стоит учитывать стоимость проживания и аренды. Есть страны, где уровень заработной платы выше среднего, но не такая высокая стоимость жизни.

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

Технические детали

Код для этого анализа можно найти в моем репозитории GitHub.