Вступление

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

За последние 2–3 года я наслаждался, а временами был заинтригован тенденциями, продемонстрированными в отчетах об опросах StackOverflow. Недавно я наблюдал, как Джош Бернхард анализирует эти наборы данных, чтобы ответить на свои собственные вопросы и сформировать свои собственные тенденции. Это вдохновило меня глубже изучить набор данных StackOverflow за последние годы и проанализировать различные тенденции последнего десятилетия.

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

Почему США и Канада являются популярными направлениями для получения высшего образования?

Чтобы ответить на этот вопрос, давайте определим 3 региона с самыми высокими зарплатами за каждый год в период 2011–2019 гг.

Если посмотреть на накопленные данные, то очевидно, что Соединенные Штаты являются явным победителем, входя в тройку лучших ежегодно с 2011 года. Канада также кажется благоприятным направлением с 3 характеристиками за 9-летний период. Что, вероятно, станет сюрпризом для некоторых: Австралия. Он входит в тройку лучших в течение 5 лет с 2011 года и, следовательно, является отличным регионом для разработчиков программного обеспечения, ищущих более удобные способы оплаты.

При более внимательном рассмотрении данных о средней годовой заработной плате в США, мы можем ясно увидеть заметный рост заработной платы разработчиков программного обеспечения за последние 2 года. Таким образом, США стали счастливым районом охоты для индустрии программного обеспечения, и неудивительно, что страна ежегодно привлекает одни из лучших умов.

Исследуя образец для других стран, таких как Канада и Австралия, мы обнаруживаем аналогичную тенденцию во всех трех странах. Последние 2 года действительно оказались все более благоприятными для финансов разработчиков программного обеспечения. Это также показывает разницу в показателях средней годовой заработной платы между 3 странами.

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

Набирает ли популярность StackOverflow Survey за последние годы?

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

Дай угадаю, сколько ты зарабатываешь!

Что хорошего в таком большом количестве данных, если к нему нельзя применить машинное обучение! Итак, теперь давайте сделаем это. Однако наша цель не будет такой примитивной, как использование набора данных для прогнозирования заработной платы. Ты увидишь!

Используя один из более простых алгоритмов машинного обучения, Линейная регрессия, я попытался построить модель для прогнозирования заработной платы людей. В частности, я искал ответы на 3 вопроса:

1. Насколько точно я могу спрогнозировать зарплату? Повышается ли эта точность по мере увеличения объема данных и увеличения количества функций с годами?
2. Какие факторы постоянно влияют на зарплату разработчика программного обеспечения?
3. Какие факторы обычно считаются влиятельными лицами, влияющими на зарплату, но на самом деле, не вкладываете много?

Применяя модель машинного обучения к данным, полученным за три года: 2011–2013 гг., Мы можем построить достойную прогностическую модель для каждого года. Здесь точность модели измеряется в балле R2 (R-Squared), где балл R2, равный 1, означает 100% точность.

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

Еще одно интересное качество для повышения точности модели - это качество функций. Например, есть такие важные функции, как Возраст. Но, если на вопрос ответит меньше респондентов, качество функции снижается, и ее влияние на повышение точности модели также ослабевает.

Некоторые вещи никогда не меняются - постоянные факторы влияния на заработную плату

В конце нашей модели машинного обучения у нас остается набор функций. Эти функции можно использовать, чтобы определить, какие факторы повлияли на нашу модель, а какие нет. Основание для нашего аргумента влиятельных лиц заключается в следующем: эти факторы значительно повысили точность нашей модели.

Наиболее заметными факторами, влияющими на заработную плату, были: страна, возраст, годы опыта, размер компании и роль / должность сотрудника. Эти факторы постоянно влияли на модели все 3 года. Были также некоторые влиятельные лица, которые казались удивительными, например: Деньги, потраченные на покупку персональных технических устройств.

Были некоторые особенности, влияние которых не было постоянным. Язык программирования может показаться важным фактором, влияющим на заработную плату. Однако, хотя его роль была заметной в 2012 году, в 2013 году она была весьма незначительной. Другой пример: отрасль, в которой работает разработчик.

Это не то, как вы думаете - результаты широко признанных влиятельных лиц на заработную плату

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

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

Другие недоброжелатели зарплаты были довольно убедительными, например использование / репутация StackOverflow, используемая ОС для настольных ПК, роль в закупках и любой другой описательный ответ.

Итак, что я узнал и разучился?

Пффф! Так что это был весьма познавательный опыт. Некоторые выводы были довольно очевидны, но было приятно подтвердить понимание с помощью точек данных. И некоторые выводы были действительно неожиданными. Честно говоря, удивительные результаты могут быть вызваны несколькими причинами, такими как меньшее количество людей, отвечающих на определенный вопрос, или форма ответов, полученных на этот вопрос.

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

Для тех вундеркиндов

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