Когнитивный сдвиг целей — это ситуация, когда во время выполнения задачи разработчик незаметно для себя переключается на другую цель. Эта новая цель может быть более интересной, технически увлекательной или просто казаться “логичным следующим шагом”. В результате основная задача остаётся незавершённой или сильно затягивается.
Это похоже на то, как если бы вы пошли почистить зубы — и оказались через час в кладовке, сортируя коробки.
Как проявляется
- Вместо реализации конкретной фичи — переписывается вся архитектура модуля.
- Вместо настройки CI/CD — начинается написание собственного GitHub Actions runner’а.
- Вместо настройки логирования — внедряется собственная обёртка над OpenTelemetry.
Пример
Задача: настроить аутентификацию через OAuth в веб-приложении.
Что происходит:
Разработчик начинает с настройки OAuth, но сталкивается с неудобным API у выбранной библиотеки. Решает написать обёртку. Потом обнаруживает дублирование в middleware и делает рефакторинг. Вместо настройки OAuth увлекается улучшением всей логики авторизации, хотя это не планировалось изначально. Через два дня задача с OAuth всё ещё не завершена, хотя в коммите уже 27 файлов.
Почему это опасно
- Нарушает сроки.
- Деморализует — ощущение “много сделал, но ничего не готово”.
- Вызывает недопонимание в команде — ожидали одно, получили другое.
- Затрудняет поддержку — побочные изменения могут повлиять на остальной код.
Как распознать
- Объём задачи сильно вырос по сравнению с исходным планом.
- Вы работаете над чем-то, что не упоминалось в оригинальном описании.
- Трудно ответить: “Что я хотел закончить сегодня?”
Как избегать
- Фиксируй цель задачи в одном предложении. Пример: “Добавить кнопку входа через Google”.
- Выпиши идеи и улучшения в отдельный backlog. Потом — приоритизируй.
- Регулярно проверяй: я всё ещё решаю изначальную задачу?
- Ограничивай время на побочные исследования. Например: “Не больше 30 минут на выбор библиотеки”.
- Обсуждай с коллегами. Это помогает заземлиться и не унести задачу в космос.
Заключение
Когнитивный сдвиг целей — это не признак некомпетентности. Напротив, он часто встречается у инициативных и увлечённых разработчиков. Но важно уметь его распознавать и управлять им — чтобы идеи не мешали доводить задачи до результата.