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

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

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

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

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

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

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

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