Автор оригинала статьи познал ад просроченных тикетов и раздраженных напоминаний «когда будет готово?» Неприятный опыт побудил его разобраться в причинах прокрастинации и найти несколько эффективных способов борьбы с этим состоянием.
Почему разработчики подвержены прокрастинации
Лень – не единственная (и не главная) причина, которая заставляет программистов откладывать работу на потом. Разработчики чаще, чем другие представители умственного труда, оказываются в ситуациях, когда мозг попросту не в силах функционировать должным образом. Это связано, прежде всего, с когнитивной перегрузкой, необходимостью постоянно изучать новые инструменты и усталостью от принятия решений.
Когнитивная перегрузка

Когнитивная перегрузка – это состояние, когда наш мозг (и префронтальная кора в частности), перегружен информацией и задачами. Для программистов это особенно актуально, так как их работа требует постоянного использования высших когнитивных функций.
Префронтальная кора мозга – это наш «центр управления». Она отвечает за:
- Анализ информации.
- Выявление закономерностей.
- Принятие решений.
- Выполнение сложных задач, особенно когда выполнять их совсем не хочется.
Проблема в том, что эта часть мозга потребляет огромное количество энергии. Когда энергия иссякает, начинаются проблемы:
- Падает продуктивность.
- Становится труднее сосредоточиться.
- Появляется желание отложить сложные задачи.
- Возникает соблазн пойти на компромиссы в работе – сделать кое-как, лишь бы закрыть тикет.
Более того, когда префронтальная кора перегружена, это влияет не только на работу, но и на поведение в целом. Роберта Сапольски в книге «Биология добра и зла. Как наука объясняет наши поступки» отмечает, что поведение людей в таком состоянии всегда меняется к худшему – они становятся менее общительными, более жесткими по отношению к окружающим, чаще лгут и нарушают диету. Это происходит потому, что сила воли – не просто метафора, а реальный физиологический ресурс мозга, который может истощаться. Поэтому для сохранения высокой продуктивности нужно более эффективно планировать свою работу и отдых.
Изучение новых инструментов
Каждый программист многократно проходит через напряженные периоды изучения новых инструментов и технологий. Для новичков с небольшим запасом навыков это особенно сложное время – в такие периоды они:
- Проводят бессонные ночи, пытаясь разобраться в новом языке программирования.
- Часами бьются над пониманием сложных функций фреймворка.
- Иногда оказываются на грани отчаяния и готовы все бросить.
Этот изматывающий период кажется бесконечным. Мозг, особенно его префронтальная кора, работает на пределе возможностей. Каждая новая концепция, каждая строчка кода требует полного внимания и значительных когнитивных усилий. Но, стоит заметить, именно в такие периоды происходит нечто удивительное: после преодоления определенного порога, написание кода перестает казаться таким сложным. Это не магия, а результат работы нашего мозга. Когда мы регулярно практикуемся и учимся, наш мозг начинает перемещать когнитивные процессы в более рефлексивные области – мозжечок. Он отвечает за автоматизированные действия, своего рода мышечную память мозга. Когда навык перемещается в эту область, он становится более автоматическим, требует меньше сознательных усилий. Понимание этого процесса помогает преодолеть начальные трудности и мотивирует продолжать обучение, – со временем оно станет легче и естественнее, а изучение каждого последующего инструмента будет даваться гораздо проще.
Усталость от принятия решений

Когнитивные задачи не ограничиваются только сложными логическими или вычислительными операциями. Они включают в себя и принятие бесчисленных решений:
- Как написать код так, чтобы потом в нем могли разобраться другие разработчики.
- Как распределить приоритет выполнения задач.
- Какой фреймворк или библиотеку выбрать для проекта.
- Стоит ли использовать какой-то новый подход для решения задачи, или сделать все по-старому.
Каждое такое решение, даже если оно кажется незначительным, потребляет часть наших ментальных ресурсов и может серьезно повлиять на продуктивность: усталый мозг склонен выбирать путь наименьшего сопротивления и вызывает желание отложить задачу.

Процесс преодоления прокрастинации
Хотя прокрастинация чаще всего связана с переутомлением, одним отдыхом тут не поможешь: нужно полностью пересмотреть подход к работе. Иначе после выхода из отпуска все начнется заново. Методом проб и ошибок автор обнаружил, что лучше всего работает комплексный подход:
- Ежедневный «ритуал» для разогрева.
- Предварительное пошаговое планирование.
- Разделение сложных задач на минимально возможные элементы.
- Геймификация.
- Отдельное решение проблемных задач.
Разогрев
Многие программисты сталкиваются с «параличом перфекциониста»: стремлением найти идеальное решение еще до начала работы, что закономерно приводит к прокрастинации. Если задача не из легких, открыть ноутбук для прокрастинатора в такие дни – все равно, что поймать единорога. Выход из этого тупика – ритуал для разогрева: определенное действие, которое не вызывает стресса и беспокойства. Автор статьи придумал такой ритуал после прочтения книги «Атомные привычки»: теперь каждый рабочий день он начинает с 5 минут упражнений на клавиатурном тренажере Monkey Type. Другой хороший вариант для начала дня – решение алгоритмических или логических задач (умеренно сложных, чтобы можно было справиться за 5-10 минут). Ощущение достижения дает заряд положительной энергии, снижает барьер для начала более сложных задач, и помогает создать устойчивую привычку начинать работу без промедления.
Планирование хода работы и разделение задач на мелкие элементы
Усталость от принятия решений можно свести на нет, если принять все решения заранее – чтобы к моменту написания кода не приходилось мучительно размышлять, сравнивать и выбирать. Основа планирования – техническая документация проекта. В западных компаниях это Engineering Requirements Document, аналог в российских компаниях – техническое задание. Помимо общих сведений о проекте, в ТЗ обычно подробно описаны:
- Функциональные и нефункциональные требования.
- Целевая аудитория продукта и сценарии использования.
- Ограничения и требования к производительности.
- План тестирования.
ТЗ помогает четко понять свои задачи, заранее выбрать инструменты, и самое главное – составить свой собственный пошаговый, структурированный план работы. Все задачи в этом плане должны быть разделены на минимально возможные элементы:
- Когда задачи разбиты на мелкие, конкретные и легко выполнимые шаги, становится проще приступить к работе – каждая задача кажется выполнимой.
- Планирование позволяет отслеживать прогресс. А видимые результаты, в свою очередь, мотивируют продолжать работу.
- Наличие детального плана устраняет неопределенность, которая часто становится причиной прокрастинации.
- Когда большинство решений уже приняты на этапе планирования, не нужно постоянно думать о следующем шаге.
- Структурированный подход предотвращает хаос и помогает сосредоточиться на приоритетных задачах.

Геймификация
Для отслеживания прогресса выполнения собственного плана стоит пользоваться личным трекером задач – Microsoft To Do, или любым другим, где можно настроить приятные звуковые уведомления о выполнении задач, и куда обязательно нужно добавить напоминания о заслуженных поощрениях. Выполнили 2-3 задачи – наградите себя.
Решение проблемных задач
Столкновение с неожиданными трудностями может парализовать выполнение вашего личного плана. Обязательно выделяйте определенный временной промежуток для решения таких проблемных задач. В течение этого времени оцените проблему со всех сторон, приложите все знания и усилия для ее решения. Если по истечении назначенного времени решить проблему не удалось – не стесняйтесь попросить о помощи. Важно принять, что иногда лучше сразу привлечь помощь других людей, чем терять время, погружаться во фрустрацию, и откладывать выполнение задачи.
В заключение
Ничто человеческое богам клавиатуры не чуждо: на продуктивность может повлиять даже такая мелочь, как пропущенный завтрак. Однако для поддержания высокой продуктивности важно не только справляться с приступами демотивации, но и выстраивать рабочий процесс таким образом, чтобы желание откладывать работу не возникало. Этого можно достичь только с помощью исправления привычек и пересмотра рабочего процесса.
Опрос в телеграм-каналах
❓ Какая самая необычная причина прокрастинации у вас была в работе над проектом?
❓ Какой метод борьбы с прокрастинацией оказался для вас наиболее эффективным?
❓ Как вы справляетесь с когнитивной перегрузкой во время работы над сложными задачами?

Обычно прокрастинировал из за того что,
1. Не совсем понимаешь с чего начать делать задачу, следовательно боязнь неудачи.
2. Думаешь что знаешь как решить и откладываешь думая что успеешь в срок, хотя всегда нужно помнить что везде есть подводные камни.
Решение в том что просто начать что то делать, можно создать ветку , покопаться в коде, спросить у коллег, посмотреть рализованно ли где то в проекте фича похожее на это. В дальнейшем сложно оставлять то что уже начал.

У меня прокрастинация – это устранение предвыгорание. Работа в выходные, или до самой ночи – значит след неделю буду прокрастинировать и восполнять энергию.

Самое сложное, чаще всего, это начать большую задачу и закончить большую задачу. Начать сложно из-за проблемы "белого листа", или трудно понять за что хвататься сначала. В этом помогает "сделать хоть какой-то мелкий шаг", как при написании диплома, заголовок написать, уже хорошо) а закончить большую (долгую) задачу тяжело, потому что хочется чтобы она поскорее уже отстала. Тут помогают чеклисты, definition of done

1. из последнего. вроде как, всю жизнь работаешь, развиваешься, изучаешь постоянно развиваешься, а по зарплате толку ноль. сколько не работай, ощущение, что толку нет – квартиру большей площади не купить, машину мечты тоже нет, дом вообще нереально построить.
ощущаешь себя белкой в колесе и выхода как будто нет.
2. для работы стараюсь правило применять – просто попробовать делать задачу 15 минут, через силу, но делать.
для души периодически занимаюсь фигней (сейчас подсел на doom emacs и по нему что-то изучаю/делаю. например, разобраться что такое такое org-agenda и как с ней работать, до этого подключал golang)
3. помогает записывать сложные моменты по задачам. часа 2 поработал над сложной задачей и записал все мысли. переключаешься на более простые задачи или ревью кода. потом возвращаешься обратно, читаешь записи и помогает отлично

1. Не припомню, обычно в ходе проекта не залипаю, но вот между ними, прям очень трудно раскачаться и взятся за следующий.
2. Разные проекты. Оутсорсинг рулит. Продуктовая разработка – могила.
3. Сплю. Когда-то в таких ситуациях глотал кофе/ энергетики и долбил задачу до последнего. Но как показал субъективный опыт – при первых признаках умственной усталости – отложить такую задачу и заняться чем-нибудь утилитарным и в последствии хорошентько выспаться. Как правило сложные задачи решаются с утра прямо в лёт.

1. Dota 2
2. Dota 2
3. и конечно Dota 2
Комментарии