2 min read

Заказчик не знает, что такое НФТ. И не должен

"Какие у вас нефункциональные требования?" — спрашиваю на встрече.

Заказчик смотрит как на инопланетянина.

Он не мыслит категориями "производительность 1000 RPS" или "доступность 99.9%". Он вообще не понимает, чего я от него хочу.

Зато он точно знает, как его бизнес работает. И вот из этого ты сам выводишь НФТ.

ФТ vs НФТ — в чём разница

Функциональные требования — это ЧТО система делает. Нефункциональные — это КАК она это делает.

Пример: "Пользователь может авторизоваться" — это ФТ. "Авторизация занимает не больше 2 секунд" — это НФТ.

ФТ отвечают на вопрос: какие функции есть? НФТ отвечают на вопрос: с какими ограничениями?

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

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

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

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

На интервью в Леруа Мерлен дали задачку: приложение, которое показывает сотрудникам — сейчас день или ночь. Нужно собрать функциональные и нефункциональные требования.

Звучит как шутка. Но попробуй вытащить из этого НФТ.

Я начал спрашивать:

🔸 Сколько человек работает в компании? → 20 000 сотрудников → понимаю нагрузку

🔸 Есть геораспределение? Часовые пояса важны? → Магазины по всей стране → нужна логика определения времени по локации

🔸 Как будут использовать и зачем вообще? → "По приколу, сидят в тёмном помещении, не знают — идти домой или нет" → Низкая критичность, не нужен SLA 99.99%

🔸 На каких устройствах? → Личные телефоны → кроссплатформенность, разные версии ОС

Из ответа про использование понял ещё кое-что: пики нагрузки будут в начале рабочего дня и под конец. Все одновременно проверяют — пора домой или нет.

Что я упустил

Не спросил: "Нужно ли собирать статистику? Логировать действия? Синхронизировать что-то между пользователями?"

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

🔸 Нет бэкенда → нет нагрузки 🔸 Нет интернета → работает офлайн 🔸 Нет синхронизации → нет проблем с часовыми поясами

Один вопрос мог изменить всю архитектуру.

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

Заказчик не скажет "мне нужна доступность 99.9%". Но ответит на:

🔸 "Что случится, если система не будет работать час? День?" → Критичность, требования к доступности

🔸 "Сколько человек будет пользоваться одновременно?" → Нагрузка, производительность

🔸 "Откуда будут заходить — офис, дом, в дороге?" → Мобильность, офлайн-режим

🔸 "Данные одинаковые для всех или у каждого свои?" → Архитектура, где хранить логику

🔸 "Что будет через год — пользователей станет больше?" → Масштабируемость

🔸 "Кто не должен видеть эти данные?" → Безопасность, разграничение доступа

Выводы для аналитика

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

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

А вы как вытаскиваете НФТ из заказчиков? Есть любимые вопросы?

@analyst_exe