Переключение между контекстами убивает эффективность разработчиков на корню
Я программист. Меня всё время отвлекают, и я хочу об этом поговорить.
Вы когда-нибудь задумывались, что сильнее всего подрывает эффективность работы? Много чего. Но мы часто недооцениваем один фактор, который выделяется на фоне остальных.
Каждое короткое сообщение, которое вы отправляете коллеге в Slack, отнимает у него 23 минуты продуктивной работы. И это далеко не всё.
Я работаю с командами разработчиков вот уже десять лет, и мы постоянно недооцениваем вред, который нам причиняют такие отвлекающие факторы. В этой статье разбираемся, почему переключение между контекстами обходится так дорого и что с этим делать.
Что такое переключение между контекстами
Вы замечали, как у вас путаются мысли, когда вы переключаетесь с чтения имейла на написание кода? Это и есть переключение между контекстами. Наш мозг не компьютер, который в состоянии мгновенно запустить новую программу. Нет, мы должны додумать один поток мыслей, а потом загрузить следующий. И эти умственные операции перегружают нас больше, чем кажется на первый взгляд.
Представьте, вы с головой погрузились в проект. Вибрирует телефон, вы проверяете сообщение и понимаете, что на него надо ответить. Потом вы на автомате возвращаетесь к проекту. После каждого такого скачка ваш мозг должен заново сосредоточиться, перебирая в памяти, где вы остановились. Эти дополнительные затраты времени на обработку информации могут замедлить вашу работу и стать причиной ошибок.
Термин «переключение между контекстами» заимствован из работы операционных систем. ОС может обрабатывать на одном процессоре (обычно это CPU) несколько процессов, приостанавливая один и запуская другой. Эти системы умеют переключаться между контекстами, а наш мозг — нет.
Почему мы переключаемся между контекстами
Мы переключаемся между задачами чаще, чем кажется. Ещё бы, ведь все приложения и уведомления специально созданы для того, чтобы привлекать наше внимание. Наш мозг обожает всё новое и устремляется к каждому новому сообщению или апдейту.
Нам кажется, что по работе мы обязаны отвечать немедленно. Это ещё сильнее снижает концентрацию, а корпоративная культура обычно такое ещё и поощряет. И перед нами столько всего: письма, чаты, открытые вкладки, на что можно легко отвлечься.

Почему переключение между контекстами так сильно вредит разработчикам
Вспомните последнюю сложную задачу по программированию, над которой вы работали. Наверняка вам приходилось держать в голове множество моментов: системную архитектуру, конкретную задачу, возможные риски, а ещё как ваше решение впишется в общую картину. Каждый элемент живёт у вас в кратковременной памяти, формируя хрупкую ментальную модель, и мы способны одновременно помнить только 7 элементов.
Когда нас отвлекают, эта ментальная модель разваливается. По данным исследования Калифорнийского университета в Ирвайне, разработчикам нужно в среднем 23 минуты, чтобы полностью восстановить концентрацию внимания.

Потерянное время — ещё не самая большая проблема
Когда нас отвлекают, мы не просто тратим ценные минуты — у нас снижается качество работы в нескольких плоскостях.
Снижается умственная энергия
Наш мозг не предназначен для постоянного переключения от одного к другому. После каждого такого скачка у нас сокращаются когнитивные ресурсы — наподобие того, как аккумулятор телефона разряжается быстрее, если переключаться между приложениями.
Крис Парнин из университета штата Северная Каролина и Роберт Делайн из Майкрософт выяснили, что у разработчиков, которых часто отвлекают, признаки умственной усталости проявляются намного раньше, чем у остальных, и во второй половине дня они допускают больше ошибок. Со временем такая умственная усталость накапливается и приводит к повышению уровня стресса и даже выгоранию.
Страдает качество кода
В 2023 году Дарио Аморозо д’Арагона вместе с коллегами исследовали влияние отвлекающих факторов и перерывов на разработчиков. Они обнаружили поразительные корреляции между сменой контекстов и снижением качества кода. Вот что показал их анализ:
-
Из-за частых перерывов и помех возрастает число ошибок, потому что разработчики с трудом заново погружаются в свой когнитивный контекст.
-
Длительные перерывы в работе провоцируют накопление технического долга, поскольку разработчикам приходится дольше погружаться в тему и вспоминать уже написанный код.
-
Постоянные отвлечения во время написания кода снижают его надёжность. А это увеличивает длительность циклов проверки кода и исправления ошибок.
Всё это — реальные проблемы, которые командам разработчиков придётся устранять позже. Так возникает цикл накопления и погашения технического долга.

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

Как сохранить состояние потока
Чтобы понять, почему отвлекаться — так плохо, мы должны обсудить «состояние потока». Это не программистский жаргон, а хорошо исследованное психологическое состояние, которое впервые описал Михай Чиксентмихайи в 1990 году.
Состояние потока — это психологическое состояние, в котором работа идёт легко, а время протекает незаметно. То есть ваши способности соответствуют уровню сложности решаемой задачи. Применительно к разработчикам это значит, что сложные задачи вдруг становятся ясными, а элегантные решения для них возникают без усилий.
Если задача вам не по зубам, вы испытываете беспокойство или фрустрацию. Если она для вас слишком простая, вам становится скучно. В модели Чиксентмихайи поток занимает центральное место на пересечении сложности задачи и уровня квалификации. В эту зону попадают задачи, которые вам по силам. По уровню сложности они вызывают у вас интерес, но не фрустрацию от зашкаливающей трудности.

Чтобы сохранить состояние потока, нужно увеличивать сложность задач по мере совершенствования своих навыков, то есть выбирать новые задачи, до которых вы совсем чуть-чуть недотягиваете по уровню мастерства. Тогда вы сможете развиваться без переутомления и перегрузок.
Но вот в чём загвоздка: поток — это очень хрупкое состояние. Он достигается только через минут 15 непрерывной работы, а одно уведомление может разрушить его за секунду. Разработчик может даже на него не отвечать; достаточно просто его увидеть, и всё: состояние потока испарилось.
По данным исследования, которое провели студенты Дьюкского и Вандербильтского университетов, отвлекающие факторы на экране сильно влияют на нас. Важные уведомления, например, срочные сообщения от тимлида, значительно увеличивают время на выполнение даже очень простых задач по программированию. Отвлекаться от работы по личным вопросам — менее вредно, так как при общении снижается уровень стресса.

Жизненный урок от нашей команды
Хочу поделиться с вами опытом. Недавно я работал с одной командой. В течение месяца мы фиксировали, кто на что отвлекался, и пытались вычислить паттерны поведения.
Особенно дорого обходилось вмешательство в работу по утрам. Один разработчик рассказал, как он два часа проектировал в уме новую функцию, но созданную модель уничтожило совещание а-ля «давайте по-быстренькому синхронизируемся». Ему понадобилось три часа, чтобы вернуться в ту же точку, где он был, пока его не отвлекли. Почему? Обычно по утрам у людей больше всего энергии и максимальная концентрация внимания — как раз подходящее состояние для решения сложных задач.
Когда мы внедрили фокус-менеджмент, мы получили следующие результаты:
-
процент выполнения задач возрос на 35%;
-
отчёты об ошибках сократились на 28%;
-
показатели удовлетворённости команды улучшились на 45%.

Как избежать переключения между контекстами
Каждому, кто занимается решением задач, требующих концентрации внимания, креативности и технического мастерства, в частности, разработкой ПО, нужно оптимизировать рабочее пространство и включаться в состояние потока. Достичь состояния потока — значит быть в оптимальном состоянии сознания, в котором человек полностью погружён в своё занятие и выполняет его наилучшим образом.
После изучения этой проблемы в разных командах я выявил несколько рабочих подходов.
Для разработчиков
1. Ставьте конкретные цели. Задавайте конкретные цели для каждого периода работы, чтобы удерживать концентрацию внимания и эффективно отслеживать прогресс. А ещё ежедневные цели помогают нам понять, что мы хотим успеть за сегодня.
2. Заносите задачи в список дел. Используйте любой инструмент, например, Todoist или Microsoft To Do, чтобы выгружать задачи из головы. Это снизит напряжённость. В любой момент можно свериться со списком и решить, над какой задачей работать дальше. Выберите самую важную задачу и начните с неё.
3. Расставляйте приоритеты. Этот приём поддерживает вовлечённость в работу и не даёт отвлекаться.

4. Выделяйте время для сосредоточенной работы. Установите полуторачасовые интервалы для сосредоточенной работы по методике, описанной в книге Кэла Ньюпорта «В работу с головой». Это оптимальное время для сохранения стабильной концентрации внимания. При этом нужно организовать минимум 4–6 часов сосредоточенной работы. Отметьте эти блоки у себя в календаре и для их выполнения выберите время дня, когда вы на пике энергии. Для большинства людей это — утро.

5. Используйте «парковку идей». Во время работы держите открытым текстовый файл. Если вам в голову приходит мысль или возникает новая задача, не переключайтесь на неё, а просто быстро запишите её в файл. Так вы сможете не отвлекаться.
6. Оставляйте себе «хлебные крошки» на случай, если вас отвлекут. Когда вы занимаетесь сложной задачей, оставляйте себе подсказки. Если вас отвлекли, лаконичный комментарий о том, почему в файле с исходным кодом в IDE вы написали именно эту строчку, сэкономит вам несколько часов, которые ушли бы на восстановление вашего хода мысли. Этим же приёмом можно пользоваться в конце дня. Тогда завтра вы точно будете знать, с чего продолжить. А ещё это помогает бороться с эффектом Зейгарник — стремлением заполнять рабочую память незавершёнными задачами.

7. Минимизируйте отвлекающие факторы. Как вариант, наденьте шумоподавляющие наушники, отключите неважные уведомления или создайте изолированное рабочее пространство. Отличный вариант — выключать на какое-то время мессенджеры и включать на телефоне режим «Не беспокоить».

8. Откажитесь от многозадачности. Наш мозг может корректно и сосредоточенно работать только над одной задачей. Так что берите в работу что-то одно.
9. Продумайте эргономику. Обзаведитесь эргономичным столом и стулом, настройте монитор, чтобы сократить физический дискомфорт.
10. Организуйте пространство. Не загромождённое рабочее пространство снижает когнитивную нагрузку и помогает сосредоточиться на задаче.

11. Используйте подходящие инструменты. Правильно подобранные инструменты и программы могут иметь огромное значение. Быстрый и надёжный комп с классным ПО упрощает работу.
12. Соблюдайте режим. Наш мозг любит порядок. Начинайте день с определённого ритуала — это подскажет мозгу, что пора входить в состояние потока.
13. Делайте регулярные перерывы. Запланированные перерывы, как в методике Pomodoro, помогут сохранять высокую концентрацию внимания и не выгорать.

14. Взаимодействуйте, если это действительно нужно. Если вы работаете в офисе, где высоко ценят открытость и доступность, проанализируйте свою готовность к взаимодействию с окружающими. Как пишут авторы книги «Алгоритмы для жизни»: «Взаимодействуйте только в той мере, в какой это для вас комфортно».
15. Планируйте день стратегически. В конце рабочего дня подведите итоги и запланируйте задачи на следующий день. Или, наоборот, начинайте каждый день с планирования. Это помогает начать день продуктивно.
16. Хорошо отдыхайте. Работать на пике возможностей в течение длительного времени — опасно. Постарайтесь делать короткие перерывы, менять местоположение, делать паузы на кофе или перекус.

Для команд
1. Установите протоколы прерывания работы. Разработайте правила и опишите срочные ситуации, из-за которых разрешается отвлекать коллег от работы. Любая другая коммуникация должна быть асинхронной или, другими словами, не мгновенной.
2. Согласуйте время сосредоточенной работы. Установите для всей команды часы сосредоточенной работы, во время которых запрещается отвлекать друг друга, разве что в случае настоящего ЧП. Например, для сосредоточенной работы можно выделить вторую половину дня нескольких дней в неделю. Один-два дня в неделю можно посвящать индивидуальной работе без совещаний и созвонов. Например, мы не проводим совещания по средам.
3. Ведите асинхронную коммуникацию. Асинхронное общение должно быть базой для удалённой работы: документации много, совещаний мало. Если вы на удалёнке, то лучше писать. Переписки позволяют в удобный момент прочитать важные сообщения и легко подключиться к взаимодействию с коллегами. Пользуйтесь функцией запланированных сообщений, чтобы коллеги не отвлекали вас во время сосредоточенной работы. А когда вы отправляете сообщение посреди рабочего дня, можно добавить приписку: «Если занят, сразу отвечать не обязательно».
4. Следуйте гибкому графику. Благодаря гибкому графику сотрудники могут выбирать время, когда они наиболее продуктивны.
5. Легализуйте возможность говорить «нет». Организуйте работу так, чтобы сотрудники не стеснялись говорить «нет», когда они перегружены. Благодарите их за то, что они делятся плохими новостями — тем самым, предотвращают усугубление ситуации.

6. Сделайте совещания содержательными (да, так тоже бывает). Разрешите сотрудникам не приходить на встречи, которые посвящены непонятно чему, или на которых им быть необязательно. Из-за такого подхода организаторам совещаний придётся уважать чужое время, предоставив коллегам возможность заниматься действительно важными делами. Планируйте совещания в часы, примыкающие к перерывам: до или после обеденного времени, в начале или в конце рабочего дня.
Отслеживайте прогресс
Давайте разберёмся, как понять, работает ли система сокращения отвлекающих факторов. Отслеживайте следующие показатели:
-
Незапланированные переключения внимания. Фиксируйте, сколько раз за день сотрудников отвлекали без предварительной договорённости.
-
Продолжительность бесперебойной работы над кодом. Со временем она должна увеличиваться.
-
Качество кода. Смотрите на число ошибок и фидбэк в процессе ревью кода.
-
Показатели удовлетворённости команды. Регулярно проводите опросы среди сотрудников.
-
Динамика скорости спринтов. Посмотрите, удаётся ли вам продвигаться быстрее после того, как сотрудники стали меньше отвлекаться.
Все эти показатели сложатся как пазл в общую картину, из которой будет видно, как эти изменения повысили эффективность разработчиков. Например, если вы используете фреймворк SPACE, должен возрастать показатель удовлетворённости и благополучия, а согласно фреймворку DORA — общее время изменений, поскольку часто помехи в работе замедляют разработку и вредят моральному духу сотрудников.
Двигаемся вперёд
Когда разработчиков отвлекают от работы, дело не только в том, что это раздражает. Это наносит сильный вред продуктивности, подрывая качество кода, боевой дух команды и сроки по проекту. Но если определиться с подходом и подобрать нужные инструменты, с этой проблемой можно эффективно бороться.
Помните:
-
Переключаться между контекстами — это не просто потерять несколько минут. У отвлекающегося разработчика падает концентрация внимания, и снижается качество кода.
-
Состояние потока повышает эффективность, но это очень хрупкое состояние.
-
Чтобы его сохранить, нужно устанавливать время сосредоточенной работы, переходить на асинхронную коммуникацию и анализировать показатели.
Общая цель — не избавиться от помех, а убедиться, что они обходятся не слишком дорого. Оберегайте время сосредоточенной работы: и команда, и программный код скажут вам за это спасибо.
Чтобы двигаться вперёд, нужно не только отсутствие помех и состояние потока, но и смелость сделать шаг к переменам. Чтобы расти, нужно изучать новое. Можно начать с бесплатного:
-
открытого занятия «Гибкое планирование: как достичь целей без саморазрушения»;
-
вводного курса бакалавриата «Программные системы и автоматизация процессов разработки»;
-
марафона «Карьерная перезагрузка»;
Или открыть перспективы и получить повышение с профессиональным обучением:
-
профессии «DevOps-инженер с нуля»;
-
на курсе «Управление по Agile, Scrum, Kanban, Lean»;
-
на обновлённом курсе «Нейросети для каждого: как решать рабочие задачи быстрее»;
-
на курсе «Основы эффективной коммуникации».
Автор: ENRUStudio