Когда подготовка к задаче становится отдельным проектом
Каждый следующий шаг выглядел разумным. Я не сразу заметил, что часть этих шагов нужна только из-за решения, которое я сам когда-то выбрал.

Недавно я поймал себя на том, что почти всё время уходит на одну предварительную задачу. Изначально она была вполне оправданной. Только работа, ради которой я за неё взялся, почти не двигалась.
Сначала понадобился один компонент. Потом выяснилось, что без другого он не заработает. За каждым исправлением обнаруживалась ещё одна зависимость. Ни про один из этих шагов я не мог сказать, что он лишний: в выбранной схеме он действительно был нужен. А вот нужна ли мне сама схема, я давно не спрашивал.
Это две разные вещи: без чего не обойдётся продукт и без чего не работает конкретное решение, которое я для него выбрал. По схеме зависимостей второе видно отлично. Она не подскажет, стоило ли вообще строить всё именно так.
В конце концов я вернулся к исходной задаче: какой результат мне нужен и какие ограничения останутся, даже если я выберу другое решение? Когда я перестал считать нынешнее устройство системы единственно возможным, нашёлся более короткий путь. Часть работы отпала, а существенные требования удалось сохранить.
Это важная для меня оговорка. Если новая схема проще только потому, что я убрал проверку безопасности, пожертвовал целостностью данных или перестал думать о восстановлении после сбоя, я не нашёл лучшего решения. Я подменил задачу более лёгкой. Сложность, которая действительно заложена в самой проблеме, никуда не делась.
Если у подготовительной задачи появляется собственный план на несколько этапов, это ещё не повод всё бросать. Но прежде чем браться за следующий этап, я спрашиваю себя: начни я сегодня с исходной задачи, выбрал бы я тот же путь?