Перейти к основному содержимому
Mobius
Средний

Что такое YAGNI (вам это не понадобится)

Полное название: You Aren't Gonna Need It

Другие названия: YAGNI, you aren't gonna need it, принцип YAGNI

Определение

YAGNI (You Aren't Gonna Need It) это принцип из экстремального программирования: не делать функцию, пока в ней нет реальной нужды, а есть лишь догадка.

Почему это важно

Очень хочется строить под каждого клиента, который когда-нибудь может прийти.

Частые ошибки

Делать функции для клиентов, которых у вас еще нет.

Практический примерУсловный пример

Бонусная программа на всякий случай

Перед запуском сайта цветочного магазина управляющая просит бонусную программу с баллами, на всякий случай. Цену считаем в неделях работы.

  1. Цена создания

    Еще две недели разработки.

    +2 недели
  2. Цена задержки

    Запуск сдвигается с 6-й недели на 8-ю, и сайт начинает приносить заявки на две недели позже.

    +2 недели
  3. Цена содержания

    Любое следующее изменение формы заказа должно сохранять работу баллов.

  4. Цена исправления

    Когда постоянные клиенты наконец о чем-то просят, это напоминание перед праздниками, а не баллы.

  5. Делать по запросу

    Запуститься на 6-й неделе, посмотреть, что просят постоянные клиенты, и сделать это.

За угаданную функцию платят четыре раза. За запрошенную один.

Условный пример

Сделать на всякий случай?

Просьба управляющей перед запуском. Выберите ответ и посмотрите, во что он обойдется.

Ситуация

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

Выберите вариант

Заплатить четыре раза или один

Запуск на 8-й неделе. Магазин платит за баллы четыре раза: за разработку, двумя неделями без заявок, каждым следующим изменением и еще раз, когда клиенты просят другое.024681012⁨Недели⁩⁨Разработка⁩1⁨Сайт работает, идут заявки⁩23⁨4 · Напоминание⁩
  1. 1Создание: еще две недели работы до запуска.
  2. 2Задержка: сайт начинает приносить заявки на две недели позже.
  3. 3Содержание: баллы должны работать после каждого изменения формы.
  4. 4Исправление: клиенты просят напоминание перед праздниками, а не баллы, и его все равно приходится делать.

Запуск на 8-й неделе. Магазин платит за баллы четыре раза: за разработку, двумя неделями без заявок, каждым следующим изменением и еще раз, когда клиенты просят другое.

Сайт цветочного магазина на шкале недель. Переключайтесь между бонусной программой «на всякий случай» и тем, о чем клиенты действительно просят.

Определение

YAGNI пришел из экстремального программирования (Extreme Programming). Мартин Фаулер (Martin Fowler) возводит термин к раннему разговору Кента Бека (Kent Beck) и Чета Хендриксона (Chet Hendrickson) в проекте C3. Правило такое: не создавать возможность ради функции, которая, как вы только предполагаете, понадобится. Фаулер называет четыре цены такой предполагаемой функции. Цена создания это усилия на анализ, программирование и тестирование. Цена задержки это полезная функция, которую за это время не сделали. Цена содержания это сложность, которую функция добавляет и из-за которой труднее менять все остальное. Цена исправления наступает, когда приходит настоящая потребность и оказывается, что функция сделана не так. У правила есть граница: Фаулер прямо пишет, что оно не относится к усилиям, которые упрощают изменение программы. Держать работу легкой для изменений не значит делать функцию на догадке.

Почему это важно

За каждую функцию «на всякий случай» платят не один раз: когда ее делают, упущенным вместо нее, при каждом изменении рядом с ней и еще раз, когда настоящая потребность оказывается другой. YAGNI держит первую версию маленькой, а план честным: делайте то, что просят сейчас, смотрите, как клиенты ведут себя на деле, и пусть это определит следующую функцию. Лишнее строительство к тому же увеличивает технический долг.

Напрямую связано: Содержание проекта (Scope), Agile (гибкий подход), Технический долг (Technical Debt).

Советы по улучшению

  • Прежде чем делать функцию, спросите, кому она нужна сейчас и что это показывает.
  • Ведите список идей на потом, чтобы «не сейчас» не превращалось в «забыли».
  • Держите работу легкой для изменений, YAGNI этого не запрещает, чтобы реальную потребность можно было быстро добавить.
  • Когда потребность подтверждена, делайте функцию тогда и в том объеме, который видно по этой потребности.

Частые ошибки

  • Прикрываться YAGNI, оправдывая неряшливую работу, которую потом трудно менять.
  • Откладывать уже подтвержденную потребность, как будто это догадка о будущем.
  • Растягивать правило на любые деловые решения, хотя оно придумано для функций продукта.

Связанные термины

Короткая проверка

Перед запуском управляющая просит бонусную программу на всякий случай. Что советует YAGNI?

Выберите ответ

Часто задаваемые вопросы

Нужно ли понимать YAGNI до открытия бизнеса?
Идея полезна всем, кто делает первый продукт или сайт: начните с того, что клиентам нужно сейчас, а остальное добавляйте, когда потребность станет реальной.
Когда YAGNI становится важен для новой компании?
На первом же списке функций. Для каждого пункта спросите: это нужно клиенту к запуску или это догадка о будущем?
Как YAGNI помогает новому бизнесу беречь бюджет?
Каждая функция, которую вы пока не делаете, это работа, за которую вы пока не платите, и запуск, который наступит раньше.
Не помешает ли YAGNI моему бизнесу расти?
Нет. Рост просто идет за тем, о чем клиенты просят на деле. Принцип о выборе момента, а не об отказе от роста.
Зачем YAGNI бизнесу, который уже работает?
Продукты обрастают функциями, которыми никто не пользуется, и каждая замедляет следующее изменение. YAGNI не дает добавлять новые на догадке.
Что идет не так, если бизнес игнорирует YAGNI?
Продукт дольше запускается, его дороже менять, и он все равно может не попасть в ту потребность, которая придет, потому что ее угадывали.
Как начать применять YAGNI к нашим текущим планам?
Пройдитесь по запланированным функциям и для каждой спросите, что показывает, что она нужна клиенту сейчас. Догадки перенесите в список на потом, остальное делайте.
Чем YAGNI отличается от просто плохой работы?
YAGNI о том, что делать, а не о том, насколько хорошо. Мартин Фаулер пишет, что принцип не относится к усилиям, которые упрощают изменение программы, поэтому чистая и гибкая работа по-прежнему нужна.
Как расшифровывается YAGNI и что это значит?
You Aren't Gonna Need It, то есть «вам это не понадобится». Принцип появился в программировании: не делать функцию, пока в ней нет реальной нужды. Некоторые переносят идею на другие деловые решения, например на ранние закупки оборудования, но это расширение, а не исходное правило.
Не рискованно ли для бизнеса следовать YAGNI?
Настоящий риск в обратной ошибке: откладывать уже подтвержденную потребность. YAGNI относится к догадкам, а не к известным потребностям.
Нужен ли разработчик, чтобы понять, подпадает ли что-то под YAGNI?
Нет. Задайте один вопрос: есть ли клиент или известная причина, которым это нужно сейчас? Если нет, это подождет.
Значит ли YAGNI, что не нужно планировать будущее?
Нет. Планируйте, ведите список идей на потом и держите работу легкой для изменений. Ждет создание функции, а не мысли о ней.

Источники: Martin Fowler, Yagni, martinfowler.com, 26 May 2015

Последняя проверка: 2026-09-24

Работал с

Что говорят клиенты

Из разных сфер и на разных этапах бизнеса

Дэн Манто

Eclipse Capital

Инвестиции и финансы в недвижимости, США

Арти МакЛабин

GameReady

Обучение и аутсорсинг в разработке игр, международная компания

Анна, Косметолог

Анна

Косметолог

После курса косметологии в одной из ведущих компаний я была в растерянности. Не знала, как открыть бизнес, что продавать из дома и как привлекать клиентов. С тех пор как я обратилась в Mobius, всё изменилось. Мы составили чёткий план с понятными шагами, без лишних рисков. Сегодня я вижу результаты, расту и развиваюсь каждый месяц.

Марк, Массажист, Ган-Явне

Марк

Массажист, Ган-Явне

Когда я закончил курс массажа, я представлял себе всё совсем иначе. Оказалось, что это тяжёлая сфера и найти финансовую стабильность непросто. Когда я пришёл в Mobius, что-то изменилось. Мы начали планомерную работу и составили бизнес-план. Без Mobius? Наверное, я бы сдался. Сегодня я верю в себя и в свой путь.

Проекты всегда опаздывают или выходят за бюджет?

Алекс помогает бизнесам в Израиле сдавать проекты вовремя и по плану. Первый звонок бесплатный.

+972 055-248-6151. Лучше в WhatsApp: большую часть дня я на встречах и отвечаю, как только освобождаюсь.