Влияют ли человеческие эмоции на результаты труда разработчика? Эту необычную тему обсуждает на портале InformationWeek специалист по исследованию данных из компании Semmle Альберт Зиглер.
Недавно, рассказывает Зиглер, он пришел на работу с испорченным настроением. Как обычно, он добирался автобусом, но у него в кармане были только крупные купюры, а водитель отказался дать сдачу, и поездка обошлась в немалую сумму. Из-за этой неприятности от кипел от злости, в результате чего первая порция строк кода, которую он ввел в компьютер, кишела ошибками.
Когда он исправил ошибки и немного успокоился, ему пришла в голову мысль, стал бы написанный им код лучше, если бы он был в хорошем настроении? Было ли это совпадением, или же довольный и веселый разработчик действительно создает более эффективный код?
Хотя тот факт, что погода, настроение и эмоции могут влиять на качество работы, вещь общеизвестная, в приложении к труду разработчиков этот вопрос почти никто не изучал. В такого рода исследованиях обычно собирают данные в реальном времени, либо их участников просят дать самооценку производительности своего труда. Хотя при этом часто задаются специальные условия и правила, Зиглер решил сфокусироваться на работе в реальной обстановке и сопоставить данные об эмоциональном состоянии разработчиков непосредственно с качеством создаваемого ими кода.
Чтобы получить ответ на поставленный вопрос, Зиглер обратился к ресурсам принадлежащего Semmle сайта lgtm.com, в которых содержались оценки качества миллионов строк кода и сообщения разработчиков, написанные в процессе создания кода. Он ограничился тремя языками программирования, чаще всего встречающимися на lgtm.com: Java, JavaScript и Python. Чтобы сопоставить эмоции и код, Зиглер проанализировал язык записок разработчиков, используя комбинацию лексического средства анализа настроения sentiment и словаря NRC Emotion Lexicon, классифицирующего слова английского языка в смысле отображения одной или нескольких из восьми основных эмоций: злость, страх, радость, печаль, доверие, недовольство, удивление и ожидание.
Например, сообщение с текстом «Черте что, без толку снова тестировать» было классифицировано как злость, а сообщение «Кое-что исправлено, но еще не работает» — как печаль. После того как сообщения были рассортированы по эмоциям, Зиглер присвоил связанному с ними коду балльные оценки качества от ста до нуля в зависимости количества ошибок. Были проанализированы сотни миллионов строк кода и сообщения программистов, накопившиеся за несколько лет, что позволило оперировать широкой выборкой и уменьшить влияние неустойчивых факторов по сравнению с другими исследованиями. Хотя исследование носило специфический характер и его результаты не следует считать окончательными, оно выявило ряд интересных трендов довольно универсального плана.
Счастье приводит к продуктивности, и наоборот
Первым обращает на себя внимание тот факт, что положительные эмоции весьма стабильно ассоциируются с объемом создаваемого кода. И это проявляется не столько в общем итоге по количеству строк, сколько в том, что программист чаще их добавляет, чем удаляет. Иными словами, сообщения с положительными эмоциями обычно коррелируют с продуктивной работой и творческим подъемом. Но вместе с тем, когда люди счастливы, они зачастую менее критичны к своей работе. То есть они имеют тенденцию больше писать новый код, чем дорабатывать уже имеющейся. При этом возникает положительная обратная связь: плодотворная работа повышает уровень счастья, а это еще больше увеличивает полезный выход.
Может возникнуть естественное возражение: много кода — дело хорошее, но ведь он еще должен быть правильным. Действительно ли положительные эмоции равносильны более чистому коду? Нет, здесь ответ отрицательный.
Более чистый код создается в печали
Исследовав средний уровень качества по всем восьми типам эмоций, можно определить, при каких из них код становится более чистым. Результаты одинаковы для всех трех языков программирования — более чистый код коррелирует с отрицательными эмоциями, особенно с печалью, которая по качеству кода значительно превалирует над всеми остальными эмоциями. Хотя это кажется удивительным, но такая корреляция наблюдается во многих сферах человеческой деятельности. С печалью или хмурым настроением часто ассоциируется сосредоточенность, здравомыслие и критическое мышление.
Итак, исследование говорит нам о том, что в счастливом состоянии духа создается больше кода, а печаль улучшает его качество. А что является главной причиной ошибок?
Злость ведет к ошибкам
Это, пожалуй, наиболее предсказуемый из полученных результатов. По данным о среднем качестве кода, злость — единственная из отрицательных эмоций, которая ведет к росту количества ошибок. Учитывая ослепляющий эффект состояния злости, этот вывод полностью объясним.
Помимо злости уровень качества ниже 50 также характерен для положительных эмоций удивления и ожидания. При этом эмоция удивления встречается весьма редко и ассоциируется с увеличением ошибок только в комбинации с ожиданием. Отсюда следует, что реально проблемным является настроение ожидания, возможно потому, что разработчики слишком торопятся закончить работу без должной проверки своего кода.
Люди за машинами
Не в малой мере по голливудским фильмам, у многих людей создается впечатление, что разработчики трудятся играючи и притом с нечеловеческой эффективностью, порхая пальцами по клавиатуре и пожевывая соленые снеки. Программирование часто воспринимается как очень абстрактная и даже экзотическая концепция, однако разработчики делают очень важную работу, создавая все более мощные и быстрые приложения, улучшающееся ПО и делающие более безопасным мир Интернета. Мы должны помнить, что они не машины, а люди, работающие за машинами. Как у любого другого человека, результаты труда разработчика зависят от его настроения и благополучия, что может иметь серьезные последствия.