← На главную

YAGNI: дешёвый код усугубляет спекулятивную архитектуру

28.06.2026 18:31 · hackernews

Вот пересказ статьи.

В разгар проекта коллега Чет Хендриксон подошёл к автору и сказал: «Я могу сделать сейчас простую версию, но через три недели её не хватит, так что давай сразу сделаем сложную». Ответ был жёстким: «Тебе это не понадобится». После нескольких раундов спора Чет ушёл, пробормотав «Оу».

YAGNI (You Aren’t Gonna Need It) — это не оправдание для отказа от проектирования. Если нужно — строй. YAGNI — это медитация на тему тайминга. Строить структуру слишком рано так же рискованно, как и слишком поздно.

Большинство думает, что YAGNI — правило экономии. Не пиши код, который не нужен, экономь усилия. Это ошибка. YAGNI не про стоимость производства кода. Он про стоимость спекулятивной структуры — архитектуры, которую вы возводите до того, как появилась требующая её фича. Спекулятивная структура выставляет два счёта.

Первый: когда вы строите структуру до фичи, вы гадаете. Обычно фича, которую вы предсказали, не совпадает с той, что пришла. Вы платите дважды — сначала работаете вкруговую вокруг неправильной формы, потом выдираете её.

Второй счёт — и его часто упускают. Даже если вы угадали идеально, вы всё равно в минусе. Ценность была не в структуре, а в опционе — возможности построить правильную структуру, когда узнаете, какая она. Строя рано, вы тратите этот опцион. Вы исполняете его до истечения срока и выбрасываете временну́ю стоимость. Ожидание — это не лень. Ожидание — это удержание актива.

У денег есть временна́я стоимость. У фич — тоже. Структура, построенная сейчас под фичу через три месяца, — это затраты, притянутые в прошлое, и доход, отодвинутый в будущее. Этот счёт приходит, даже когда ваша догадка верна. Идеальное предвидение не спасает, потому что дисконтирование не заботится о вашей правоте. Ему важно, что вы выстроили затраты до возврата средств. Разрыв между ними — чистый убыток.

Заметьте, чего нет ни в одном из счетов: стоимости набора кода. Это критично, потому что стоимость набора кода упала почти до нуля. Джинн (генеративная модель) пишет спекулятивную структуру бесплатно и мгновенно. Если бы YAGNI был про экономию усилий, дешёвая генерация отменила бы его. Но это не так. Оба счёта — худший NPV и потеря опциона — переживают дешёвый код нетронутыми.

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

Стройте, когда это нужно. Не потому что код дорог. А потому что опцион стоит больше, пока не потрачен, и доллар стоит больше, пока не потрачен. И ничего из этого не изменилось, когда печатать стало дёшево.

Читать оригинал →