Табуляции и пробелы-это тема, которая разделяет мнения, как никакая другая тема программирования. Теперь кажется, что ваше предпочтение отступов-это не просто личное дело, оно влияет на то, что вы, вероятно, заработаете.
Удивительный вывод о том, что разработчики, использующие пробелы для отступов, зарабатывают больше денег, чем те, кто использует вкладки, исходит от ученого по данным Stack Overflow Дэвида Робинсона в блоге, в котором также сообщается, что необработанные данные для опроса разработчиков Stack Overflow доступны для загрузки.
Вопрос «есть ли у вас вкладки или пробелы для отступов кода» был включен в опрос о переполнении стека 2017 года, проведенный в период с 12 января по 6 февраля. Из более чем 64 000 разработчиков из 213 стран, принявших участие, почти 40 000 ответили на него, и в целом преобладали вкладки, причем 43% использовали их по сравнению с 38%, использующими пробелы, и 19% как вкладки, так и пробелы.
В своем анализе данных Робинсон обращался только к профессиональным разработчикам, и здесь пользователи Пространства превосходили пользователей вкладок с небольшим отрывом-от 42% до 41%, а ответ на оба вопроса сократился до 17%. Из этой группы почти половина предоставила свою зарплату, и на основе этих данных Робинсон составил эту диаграмму заработной платы по годам опыта для трех групп.
Робинсон уточнил:
Средний разработчик, использующий пространства, имел зарплату в размере 59 140 долларов, в то время как средний разработчик вкладок имел зарплату в размере 43 750 долларов. (Обратите внимание, что все результаты были конвертированы в доллары США из валюты каждого респондента). Разработчики, которые ответили “Оба”, как правило, были неотличимы от тех, кто ответил “Вкладки”.
Поскольку зарплаты сильно различаются в зависимости от страны, Робинсон исследовал, может ли региональное предпочтение типа отступа объяснить результат.
Посмотрев на страны, в которых было больше всего респондентов, Робинсон пришел к выводу:
Эффект меньше в Европе и особенно велик в Индии, но он проявляется в каждой стране, что говорит о том, что это не единственный сбивающий с толку фактор.
Затем он исследовал, может ли разрыв табуляции/пробелов быть объяснен языками, используемыми респондентами, и их типом разработчика — data scientist, web, embedded и т. Д., И обнаружил, что эффект сохраняется.
Идя дальше он спросил:
Если мы контролируем все факторы, которые, как мы подозреваем, могут повлиять на зарплату, насколько сильно влияет выбор вкладок/пробелов?
Для исследования этого Робинсон применил линейную регрессию, прогнозируя заработную плату на основе следующих факторов:
Вкладки против пробелов
Страна
Многолетний опыт программирования
Тип и язык разработчика
Уровень формального образования (например, бакалавриат, магистратура, докторантура)
Вносят ли они свой вклад в открытый исходный код
Программируют ли они как хобби
Размер компании
Вывод был таков::
Модель подсчитала, что использование пробелов вместо вкладок приводит к повышению заработной платы на 8,6% (доверительный интервал (6%, 10,4%), p-значение < 10^-10). (Предсказав логарифм заработной платы, мы смогли оценить процентное изменение, которое каждый фактор внес в зарплату, а не сумму в долларах). Другими словами, использование пробелов вместо вкладок стоило дополнительных 2,4 лет опыта. Одна вещь, которая удивила меня в этих данных, заключалась в том, что пробелы не были более распространены, учитывая результат, о котором мы сообщили в прошлом году в результате анализа 400 000 репозиториев GitHub, которые вместе содержали 1 миллиард файлов и 14 терабайт кода, который показал, что вкладки превосходят вкладки с большим отрывом, см. Вкладки Или Пробелы - Один миллиард файлов Позже Ответа. Это исследование показало очень разные пропорции использования вкладок в зависимости от языка - например, разработчики Go всегда используют вкладки, а большинство программистов C делают это. С другой стороны, разработчики Ruby используют только пробелы, как и большинство питонистов и большинство веб-разработчиков (JSON, HTML и в меньшей степени JavaSrcipt). Глядя на другой анализ, проведенный ведущими репозитариями GitHub от Uku Pattak, мы обнаруживаем языки, которые используют пробелы, исключительно или почти исключительно, включая Clojure, Rust, F#, Elixir, которые, как мы сообщали еще в марте (см. Удовлетворенность разработчиков оплатой по Переполнению стека), являются самыми высокооплачиваемыми технологиями во всем мире в опросе Переполнения стека. Scala, которая является второй по величине высокооплачиваемой технологией в США, также является языком только для космоса. С другой стороны, Go, исключающий вкладки, является самой высокооплачиваемой технологией в США и занимает 5-е место в мире, что противоречит попыткам гипотезы о том, что языки, которые настаивают на пространствах, по своей сути лучше оплачиваются. Какова бы ни была причина, по которой Робинсон обнаружил, что это может помочь смягчить дебаты о вкладках и пробелах, которые могут стать очень жаркими, даже на личном уровне. Если вы являетесь поклонником сериала "Силиконовая долина", вы вспомните, как он разрушил многообещающие отношения Ричарда Хендрика с Винни, которая написала код с пробелами вместо вкладок, заявив: "я ни за что не буду с кем-то, кто использует пробелы вместо вкладок." Если вы признаете, что использование пробелов, а не вкладок, может принести вам значительно более толстый пакет оплаты, трудно придерживаться такого отношения.