Что делать, чтобы быть более продуктивным — об этом написаны тонны литературы, от научной до художественной и даже эзотерической. Однако иногда почувствовать, что рабочий день удался, можно без стояния на гвоздях и подъема в пять утра — достаточно убрать раздражающие факторы. Мы в beeline cloud решили разобраться в исследованиях о том, что бесит разработчиков: джунов и сеньоров, в корпорациях и небольших фирмах.
Довольный разработчик — продуктивный разработчик
Идея связать производительность труда с уровнем счастья работающего, мягко говоря, не нова и восходит ещё к античности. За пару с лишним тысяч лет она, претерпев в процессе некоторые изменения, прочно вошла в обиход специалистов: к концу XX века гипотеза о взаимосвязи продуктивности с эмоциональным благополучием выросла до отдельного направления — позитивной психологии. Ее автор, американский академик Мартин Селигман, впоследствии сформулировал модель человеческого благополучия PERMA, на основе которой развивают управленческие методики в бизнесе. А понятие, предложенное еще в 1970-х психологом Михаем Чиксентмихайи, — состояние потока — и сейчас играет важную роль в исследованиях, направленных на поиск факторов и критериев, определяющих оптимальный баланс между стрессом и вовлечённостью сотрудника.
Накопленный опыт по мере возможностей стараются использовать в разных сферах бизнеса — ИТ-индустрия тут не исключение. Компании практикуют разнообразные подходы, чтобы сделать сотрудников более продуктивными: от банальных перестановок мебели в офисе до инвестиций в рабочие инструменты. И в этом ключе проводят новые, более узкоспециализированные исследования. Так, в 2021 году рабочая группа, состоящая преимущественно из инженеров Google (а также специалистов других ИТ-компаний), задалась вопросом: какие факторы действительно влияют на продуктивность разработчиков и зависят ли они от особенностей конкретной организации.
Исследование охватило несколько сотен сотрудников из трех международных ИТ-фирм. Результаты показали, что на восприятие своей продуктивности сильнее всего влияют нетехнические факторы: искренний интерес к решению задач, чувство поддержки от коллег при обсуждении личных инициатив, а также своевременная и конструктивная обратная связь от руководства и заказчиков. Эти факторы оказались более важными, чем изменения в офисной среде или улучшение технической инфраструктуры, и были отмечены респондентами во всех трех организациях, где проходили исследования.
Вообще, исследований о том, что помогает разработчикам, довольно много. Также существуют работы, авторы которых изучали связь между продуктивностью программистов и, например, временем сборки проекта или прохождением код-ревью. Однако в последнее время исследователи идут, что называется, от обратного:
Другой взгляд на продуктивность
Одно дело — разобраться в том, что может повысить эффективность работы. Другое — понять, что превращает обычный рабочий день в непродуктивный, когда человек чувствует стресс, усталость и раздражение. Чем больше таких дней, тем вероятнее наступают их долгосрочные последствия: потеря инициативности и мотивации, сомнения в собственных компетенциях и размышления об увольнении. Научных работ, рассматривающих вопрос с этого ракурса, пока не так много. Еще меньше исследователей попытались сопоставить то, что сами разработчики считают причиной «плохих дней», с объективными данными — например, метриками или телеметрией.
Исправить ситуацию решили специалисты Microsoft в сотрудничестве с исследователями из Университета Виктории (Канада) и Университета Пердью (США), которые в октябре этого года опубликовали результаты масштабной научной работы. Ученые выясняли, какие факторы ухудшают настроение программистов и становятся причиной «неудачных дней». Исследователи организовали серию интервью по видеосвязи с 22 инженерами-программистами из разных отделов Microsoft. У сотрудников уточняли, как они видят «неудачные дни», просили их рассказать о личных примерах и причинах сложностей на работе. Целью этих интервью было собрать первичные данные о том, что именно превращает обычный рабочий день в день, когда «…и ты горишь, и все горит, и ты в аду».
Чтобы подкрепить и углубить данные, полученные в ходе интервью, исследователи расширили выборку и организовали аналогичный опрос по электронной почте — уже среди более чем двухсот участников. Респонденты указывали свои роли в проекте, профессиональный опыт, давали определение термину bad day и расписывали факторы, влияющие на появление «неудачных дней». Дополнительно 79 респондентов вели дневники, оценивая каждый рабочий день в течение месяца. Они могли обозначить свои впечатления как нейтральные, хорошие и плохие. В последнем случае — указывали причины «неудачного дня». Также 131 участник опроса согласился на анализ телеметрии (от выявления проблем со сборкой до заминок с pull request’ами) в течение полугода.
Результаты анализа показали, что больше 80% разработчиков испытывали от одного до восьми «неудачных дней» в месяц. (Что интересно, цифра «бьется» с показателями, которые отметили участники обсуждения в тематическом треде на Hacker News — в среднем они сталкиваются с 3–5 «неудачными днями» ежемесячно). Чаще всего bad days вызваны неэффективными рабочими процессами, трудностями в общении с коллегами и недостаточной функциональностью инструментов для разработки.
Еще одной причиной возникновения «неудачных дней», по мнению 67% участников исследования, является низкое качество ИТ-инфраструктуры. Разработчики отмечают, что их продуктивность часто страдает из-за медленных и неэффективных сборок или устаревшего программного обеспечения. Перечисленные проблемы приводили к эмоциональному истощению.
Что интересно, эмоции специалистов, столкнувшихся с проблемами на работе, отличались в зависимости от их профессионального опыта. Специалисты со стажем ощущали раздражение и даже гнев. Если же «неудачные дни» шли один за другим, они начинали испытывать усталость, разочарование от работы и желание ее сменить. А вот для джунов основной негативной эмоцией было чувство вины. В первую очередь это может быть связано с тем, что для «сеньоров» основной причиной «неудачных дней» становились внешние факторы, замедляющие или осложняющие достижение целей. А вот для новичков проблемой нередко была нехватка компетенций. В целом авторы исследования отмечают, что их работа — лишь начало изучения феномена «неудачных дней», а компаниям и исследователям стоит уделить этому вопросу больше внимания.
Похожее исследование провел коллектив из представителей нескольких европейских (Германия, Италия, Норвегия, Финляндия) университетов в 2017 году. На GitHub специалисты нашли контактные данные 33 200 инженеров-программистов, а затем отправили им информацию об исследовании. Принять в нем участие согласились 2220 человек из 88 стран. Большинство (24%) были из США. Кстати, российские разработчики в исследовании тоже поучаствовали — в количестве 5% от общего числа опрошенных.
Экспертам удалось выделить 219 факторов неудовлетворенности («unhappiness»), которые отражаются на процессе разработки, ухудшают продуктивность и настроение программистов. В первую очередь опрошенные отмечали, что наибольший стресс вызывает (ожидаемо) ощущение тупика при решении задачи или нехватка времени на ее выполнение. Также значимыми факторами называли низкое качество кода в компании, недостаточную квалификацию коллег, неудачные организационные решения в процессе разработки и потерю мотивации из-за неудовлетворённости собственной работой. К тому же респонденты отмечали, что сложности в общении между сотрудниками и руководством угнетают моральный дух в команде, так как плохие эмоции передаются от одного разработчика к другому, а нерешённые конфликты воспаляются вновь.
Специалисты пришли к выводу, что многие причины, влияющие на качество рабочего дня и настроение сотрудников, находятся за пределами их личного контроля. Эти проблемы чаще всего связаны с организацией рабочего процесса, корпоративной культурой, коммуникацией внутри команды или управленческими решениями. Иными словами, это как раз те моменты, на которые вполне способно — по мере возможностей — повлиять руководство. Если, конечно, менеджмент будет в курсе существующих проблем. А это, к сожалению, не всегда так. Согласно статистике, которую приводит компания Atlassian в своем недавнем отчете State of DevEx report, только 44% разработчиков считают, что их руководители знают о сложностях, с которыми они сталкиваются на работе.
Такое расхождение в восприятии между инженерами и менеджерами становится одной из ключевых причин неудовлетворенности сотрудников и снижения их продуктивности. Чтобы обнаружить эти «болевые точки», Atlassian провела опрос среди 2100 своих сотрудников. Среди причин недовольства специалистов были выделены: а) неинформативная документация, б) чрезмерный технический долг, увеличивающий время на выполнение задачи, в) регулярные изменения рабочих процессов, которые порой вводятся без обоснования, вызывая стресс.
Некоторые участники опроса признались, что из-за накопленных негативных эмоций и усталости от затянувшихся проблем они всерьез задумываются о смене работы: 63% респондентов учитывают свою эмоциональную удовлетворённость, когда решают, оставаться ли им в компании или нет.
Самая простая рекомендация менеджерам, которую дают исследователи в завершение этого неутешительного анализа — активнее общаться с программистами. Пытаться улучшить жизнь разработчиков, не спросив об этом самих разработчиков — все равно что «искать телефон по всему дому, держа его в руке», иными словами, совершенно непродуктивно. И хотя этот совет не блещет оригинальностью, он действительно работает — к аналогичному выводу приходят и в многих других исследованиях.
Как с этим работают
На практике повышением продуктивности и созданием оптимальных условий труда для разработчиков занимаются в рамках отдельного направления — developer experience или DevEx. Этот термин обозначает узкоспециализированную область знаний, посвящённую созданию оптимальных условий для работы программистов. В свою очередь DevEx-специалисты фокусируются на улучшении рабочих процессов, оптимизации инструментов разработки, повышении уровня удовлетворённости сотрудников от своей профессиональной деятельности в целом.
Так, компания Wix работает над улучшением DevEx, развивая внутренние инструменты разработки. Другой пример — Spotify, компания внедрила (и передала в open source) платформу Backstage. Она стандартизирует внутренние сервисы, предоставляет разработчикам удобный доступ к ресурсам и информации. Как результат, они тратят меньше времени на поиск документации и управление сервисами и могут сосредоточиться на запуске новых функций. В целом DevEx-руководства и списки рекомендаций готовят и другие технологические компании — например, Microsoft.
Сократить влияние «неудачных дней» помогают не только методические рекомендации или масштабные разработки. К примеру, в компании Swarmia внедрили в корпоративный мессенджер специальную кнопку «paper cut» («Я порезался бумагой»). С её помощью любой разработчик мог рассказать о своём «неудачном дне» и поделиться с руководством или ответственными специалистами возможными причинами. Каждый такой отзыв автоматически превращался в задачу Jira, которую видела команда DevEx, так что вскоре отдел накопил больше 1000 отзывов о проблемах в рабочих процессах. И хотя большинство трудностей были вызваны мелкими сбоями и задержками, в компании признают, что без обратной связи от сотрудников их было бы сложно обнаружить.
В итоге специализированная команда инженеров сосредоточилась на анализе замечаний и предложений, внося изменения в корпоративное программное обеспечение. «Бумажные порезы» — небольшие, но раздражающие проблемы, неожиданно стали приоритетными. Что интересно, опыт пошел на пользу не только сотрудникам — инсайты также использовали для улучшения UX в клиентском программном обеспечении.
beeline cloud — secure cloud provider. Разрабатываем облачные решения, чтобы вы предоставляли клиентам лучшие сервисы.
Комментарии (8)
OlegZH
22.12.2024 08:04Что делать, чтобы быть более продуктивным ...
... надо знать, что и как ты делаешь.
Представим себе разработку ПО как дерево. Есть вершина — проектируемая система, есть промежуточные узлы — компоненты (различного уровня вложенности), есть листья — конечные функции. Если есть такое дерево, то можно составить чёткий план действий: сначала реализуются конечные функции (то есть — создаются базовые библиотеки), потом — компоненты первого уровня, далее — компоненты второго уровня... Понятное дело, что такое дерево должно быть полным. Обычно предпочитают не строить такое дерево, а полагаются на случай, в результате тратится очень много сил и времени на постоянное хождение по такому дереву "вширь" и "вглубь" (снизу вверх и сверху вниз).
Экспертам удалось выделить 219 факторов неудовлетворенности ...
Нужно ли проводить исследование там, где достаточно простого размышления?
В первую очередь опрошенные отмечали, что наибольший стресс вызывает (ожидаемо) ощущение тупика при решении задачи или нехватка времени на ее выполнение.
Лично мне было бы чрезвычайно интересно узнать, если бы везде использовался профессиональный подход, когда программист сам определяет свои задачи. Кто как не профессионал знает, сколько на самом деле требуется времени для выполнения определённой работы? Если есть какой-то тупик, то требуется исследование различных вариантов.
Ещё один важный фактор — это возможность делать свою работу не прерываясь. Ничто не раздражает сильнее, как прерывания, особенно те, которые не нужны.
А ещё очень не хватает ретроспективного анализа уже проделанной работы. Допустим сделана успешно функционирующая система. (Нам повезло.) Давайте посмотрим, как именно на каждом этапе решались проблемы, откуда эти проблемы возникали, можно ли было сразу найти правильное решение, и, главное, как надо было организовать рабочий процесс, чтобы эти проблемы не возникли. Вот самое интересное.
rockstar_made
22.12.2024 08:04Пиццу у лида выпросить и кофе побольше - во! И выгорание магическим образом как рукой сняло :D
gen_dalf
22.12.2024 08:04Могу показаться старомодным, но прежде всего это многозадачность, когда нужно сразу решать несколько проблем, постоянно держать в голове несколько контекстов. И как следствие это размытие фокуса - то для сохранение чего и созданы аджайлы, паттерны, принципы, ооп. Выгорание наступает практически мгновенно. Решать нужно одну задачу с максимально ограниченным контекстом, не думая и не отвлекаясь на не связанные с основной задачей вещи. Низкая связанность и высокая связность. И это не только про код. Про инфраструктуру и процессы тоже.
MrCooger
22.12.2024 08:04Экономические проблемы из-за мировых событий сильно подрезали качество жизни и продуктивность упала раза в три, без надежды на восстановление пока что
yakBober
Просто надо всем работникам давать что-то на подобии бесплатных пончиков и сделать 4 ДНЕВНУЮ рабочую неделю. Тогда продуктивность точно вырастет.
dmitrykabanov
Можно и без пончиков, в конце этой недели пятницу-субботу срезать
OlegZH
Оптимальная четырёхдневная рабочая неделя — это два рабочих дня, дневной перерыв, два новых рабочих дня, двухдневный перерыв.
Тут важен ритм. Длинные выходные сбивают ритм. Перерыв нужен для того, чтобы освежить восприятие и соображение.
И, всё-таки, продуктивность зависит не от количества рабочего времени, а от того, как оно организовано.
Kanut
А я бы сказал что это очень индивидуально. Потому что лично у меня выходной в среду тоже сбивает ритм. И мне удобнее иметь дополнительный выходной в понедельник или пятницу.