Технические знания

Ещё одна статья

Опытный продакт строит только то, что нужно, а для всего остального просит команду интегрироваться с готовыми API. Чтобы написать хорошие требования к продукту и понять предложения API других команд, продакт должен понимать структуру API: endpoint, input, output, errors.

Простой пример: покупка кофе
API — это способ попросить систему выполнить за нас работу. Мы даем что-то на входе (input) и получаем ответ (output) на выходе. При этом нам совершенно все равно, что именно система делает для получения результатов — в этом вся суть.

Например, заказывая кофе, мы обмениваем деньги и выбор (input) на чашку кофе (выход). Нам вообще неважно, как этот кофе был доставлен из сортировочного центра и на какой полке хранился на складе. Все, что нам здесь интересно — это качество результата в нашей чашке.
Бизнес-пример: API прогноза погоды
Представим, что вы — продакт приложения для бегунов и хотите интегрировать прогноз погоды в приложение (не всем нравится бегать под дождем). Вы немного погуглили и нашли этот документ (платного) API погоды:
Input Parameters:
  • Location: "Москва"
  • Date/Time: e.g. "2024-02-08 15:00:00"

Output Parameters:
  • Temperature: "25°C"
  • Weather Condition: "солнечно", "дождь", "облачно" и т.д.
  • Precipitation: "20% вероятность дождя"

Potential errors
  • Неизвестная локация
  • Дата/время в прошлом
Что мы здесь сразу видим? Вы можете передать город (он у вас есть!), дату/время (они тоже есть) и получить температуру в градусах Цельсия, а также погодные условия. А еще:
  • У пользователей будут проблемы в пригородах подальше от городов (поскольку API не поддерживает простые координаты, а только города).
  • Температура указана только в градусах Цельсия (пострадают клиенты из США и прочих стран, где используют Фаренгейты). Поэтому надо будет добавить свой простой "переводчик" между температурами.
  • Ничего не говорится о ветре (бегунам может быть некомфортно, если ветер будет сильнее определенного порога).
Этого достаточно, чтобы либо поставить команде задачу по интеграции с этим API, либо продолжить поиск и найти что-то еще. Обратите внимание, что мы, как продакты, сделали этот анализ всего за несколько минут, даже не поговорив с техническими специалистами!
Обратный пример: продакту нужна новая функция через API
Предположим, что мы хотим добавить в наше беговое приложение новую крутую фичу — маршруты для бегунов. Да, Google может построить маршрут для водителей и пешеходов, но бегунам нужно немного другое. Мы предполагаем, что пользователь может указать параметры тренировки и получить идеальный маршрут для пробежки. Запрашиваем у бэкенд команды следующий API:
Input Parameters:
  • Distance: сколько километров пользователь хочет сегодня пробежать
  • Time: то же самое, только в минутах
  • Preference: парки, поля, урбан, вдоль реки - предпочтения по видам
  • Circular or not: круговой маршрут (или нет)

Output Parameters:
  • Array of coordinates (lat, long): список координат для отрисовки на карте
  • Descriptions: список указаний ("На перекрестке поверни налево на ул. Ленина")
  • Total distance: суммарное расстояние

Potential errors
  • Не получилось построить маршрут
  • Расстояние слишком короткое/длинное
  • Данное предпочтение пользователя не поддерживается
  • Системная ошибка
Заметьте, как мы перешли от невнятного «маршрут для бегунов» к более конкретному соглашению по input / output. Это уже можно обсуждать с технической командой: смогут ли они это построить, чего не хватает и т.д.
Мы не упоминаем, как это будет реализовано: хитрым ML-ем или с помощью какого-то простого набора правил. Но мы четко говорим, что пользователи будут отправлять и что мы ожидаем в ответ — это хорошее ограничение для того, чтобы начать работу.
Вывод
Продакт должен помнить следующее:
  • API состоит из input & output (включая возможные ошибки).
  • Продакт должен сосредоточиться на основной ценности продукта, а в остальном использовать API для аутсорсинга работы. Необходимую функциональность можно быстро найти и прочитать документацию. С высокой вероятностью умные разработчики уже создали логику, которая вам нужна.
  • Если нужно выдать требования для других сервисов, вы можете сделать это в форме API input/output. Это применимо, если вы хотите предложить (или продать) часть своего функционала через API.

Хотите попробовать вызвать API своими руками? В реальности это проще, чем кажется. Вот ссылка на тренажер - без регистрации и СМС.

Хотите прокачать технические навыки в целом? Приходите на симулятор "Технологии для продакта", там мы разбираем такие важнейшие темы, как API, архитектура (Service Diagram), оценку сложности проектов, SLI/SLOs, и так далее.