«Какие у вас нефункциональные требования?» — спрашиваю на встрече. Заказчик смотрит как на инопланетянина. Он не мыслит категориями «1000 RPS» или «доступность 99.9%». Зато точно знает, как работает его бизнес — и НФТ ты выводишь сам, из этого.

ФТ vs НФТ

Функциональные требования — это что система делает. Нефункциональные — как. «Пользователь может авторизоваться» — ФТ. «Авторизация занимает не больше 2 секунд» — НФТ. ФТ про функции, НФТ про ограничения.

ФТ (ЧТО система делает) против НФТ (КАК она это делает) и основные типы нефункциональных требований: производительность, доступность, масштабируемость, безопасность, надёжность, совместимость, локализация

Основные типы НФТ:

  • Производительность — запросов в секунду, время отклика;
  • Доступность — процент аптайма (SLA 99.9% = 8 часов простоя в год);
  • Масштабируемость — что будет при росте нагрузки в 10 раз;
  • Безопасность — доступ, шифрование, аудит;
  • Надёжность — поведение при сбоях и восстановление;
  • Совместимость — браузеры, ОС, устройства;
  • Локализация — языки, часовые пояса, форматы дат.

Проблема в том, что заказчик не думает этими категориями. Он думает своим бизнесом.

Кейс с собеседования

В Леруа Мерлен дали задачку: приложение, которое показывает сотрудникам — сейчас день или ночь. Собрать ФТ и НФТ. Звучит как шутка, но НФТ оттуда вытаскиваются вопросами:

  • «Сколько человек в компании?» → 20 000 → понимаю нагрузку.
  • «Есть геораспределение, часовые пояса?» → магазины по стране → нужна логика времени по локации.
  • «Как и зачем будут пользоваться?» → «по приколу, сидят в тёмном помещении» → низкая критичность, SLA 99.99% не нужен.
  • «На каких устройствах?» → личные телефоны → кроссплатформенность, разные версии ОС.

А ещё из сценария вылезли пики нагрузки — в начале и конце смены все разом проверяют, пора ли домой.

Что я упустил

Не спросил: нужно ли собирать статистику, логировать, синхронизировать что-то между пользователями. Если нет — день/ночь определяется вообще без сервера, по времени на телефоне:

  • нет бэкенда → нет нагрузки;
  • нет интернета → работает офлайн;
  • нет синхронизации → нет проблем с часовыми поясами.
Один вопрос про архитектуру мог изменить всё решение.

Вопросы, которые вытаскивают НФТ

Заказчик не скажет «мне нужна доступность 99.9%», но ответит на:

  • «Что будет, если система не поработает час? День?» → критичность, доступность.
  • «Сколько человек одновременно?» → нагрузка.
  • «Откуда заходят — офис, дом, в дороге?» → мобильность, офлайн.
  • «Данные одинаковые для всех или у каждого свои?» → где хранить логику.
  • «Что через год — пользователей больше?» → масштабируемость.
  • «Кто не должен видеть эти данные?» → безопасность.

Что забрать

  • Не спрашивай про НФТ напрямую — спрашивай про сценарии.
  • Из контекста бизнеса рождаются конкретные ограничения.
  • Один вопрос про архитектуру может перевернуть решение.
Упущенное ограничение больнее упущенной фичи: фичу добавишь, а переделывать архитектуру дорого.

С функционалом справляются все. Ограничения — то, что отличает джуна от мидла.