YAGNI (You Aren’t Gonna Need It) — процесс и принцип в разработке ПО, при котором объявляется отказ от избыточного функционала в угоду добавления кода, решающего только конкретную поставленную задачу. Мы отказываемся добавлять что-то сверх того, что поможет решить текущую задачу, для избежания лишней сложности в коде и более быстрого выпуска продукта или инкремента продукта.

Если не соблюдать YAGNI, мы можем прийти к следующим проблемам:

  1. Трата времени на ненужные доработки вместо фокуса на нужные — меньший контроль над созданным/доработанным/исправленным функционалом. Это самая минорная проблема, но всё ещё важная;
  2. Если мы добавим новые не нужные на текущий момент функции, это может помешать нам быстро и безболезненно добавить новые, действительно нужные, функции в будущем;
  3. Новые не нужные в данный момент функции могут работать не так, как они бы могли быть задуманны тогда, когда должны быть добавлены. Поэтому тяжело предугадать, что в действительности они должны делать, а, следовательно, и протестировать их, отследить их влияние на текущий функционал;
  4. Не всегда будет время на то, чтобы задокументировать и описать добавленную ненужную функцию, что ведёт либо к мёртвому коду, о котором не узнают потребители, либо к дырам в безопасности ПО;
  5. Потенциальный эффект «снежного кома», который может раздуть ПО до недорабатываемых и неподдерживаемых состояний.