Business | System analyst
Авторский канал для бизнес/системных аналитиков от аналитика со стажем, как для начинающих, так и для бывалых Сотрудничество: @the_real_bird Регистрация РКН: https://knd.gov.ru/license?id=673c68d031a9292acd1c5784®istryType=bloggersPermission #J6THB
Больше📈 Аналитический обзор Telegram-канала Business | System analyst
Канал Business | System analyst (@ba_and_sa) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 17 965 подписчиков, занимая 586 место в категории Маркетинг и PR и 37 353 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 17 965 подписчиков.
Согласно последним данным от 05 июля, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -172, а за последние 24 часа — -3, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 12.05%. В первые 24 часа после публикации контент обычно набирает 5.23% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 2 156 просмотров. В течение первых суток публикация набирает 936 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 6.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как ba|sa, архитектура, api, аналитика, bpmn.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Авторский канал для бизнес/системных аналитиков от аналитика со стажем, как для начинающих, так и для бывалых
Сотрудничество: @the_real_bird
Регистрация РКН: https://knd.gov.ru/license?id=673c68d031a9292acd1c5784®istryType=bloggersPermission
#J6...”
Благодаря высокой частоте обновлений (последние данные получены 06 июля, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Маркетинг и PR.
[Пользователь] → Оформить заказ
→ 🟠 Заказ создан
→ 🟣 Когда заказ создан — проверить наличие товара
→ 🟠 Наличие подтверждено
→ [Система] → Создать платёж
→ 🟠 Платёж инициирован
→ 🟠 Оплата подтверждена
→ 🟣 Когда оплата подтверждена — передать в склад
→ 🟠 Заказ передан на сборку
И вот тут кто-нибудь из бизнеса обязательно скажет: “Стоп, а если товара нет — что происходит?” И выясняется, что этот сценарий никто не описал. Вешаем красный стикер.
За один такой вечер находим больше пробелов, чем за месяц переписки в почте.
Почему это работает лучше классических интервью
На интервью бизнес отвечает на ваши вопросы — то есть вы ограничены тем, что догадались спросить. На Event Storming бизнес сам моделирует свой процесс и сам видит где он не доработан.
Аналитик здесь не интервьюер, а фасилитатор. Вы не задаёте вопросы — вы создаёте условия чтобы знания вышли наружу сами.
Когда это особенно полезно
— Старт нового проекта когда процессы ещё не описаны — Сложные интеграции между несколькими командами — Когда разные отделы по-разному понимают один и тот же процесс — Рефакторинг legacy-системы где документации нет вообще
Что важно для хорошей сессии
Несколько вещей которые я поняла уже на практике, не из книжек:
— Зовите всех кто принимает решения, не только исполнителей. Без ЛПР сессия даёт половину результата — Физическая стена и стикеры работают лучше любого онлайн-инструмента. Miro — только если нет выбора — Сессия не должна длиться больше 4 часов. После люди перестают думать — Фасилитатор не эксперт в предметной области — и это хорошо. Глупые вопросы вскрывают самые интересные противоречия
Источник: @ba_and_sa
💙 BA|SA | 💬 BA|SAПолучаю как-то документацию на внешнее API — для интеграции с платёжным сервисом. Открываю Swagger, всё красиво, эндпоинты на месте. Согласовываю интеграцию, передаю в разработку. Через две недели разработчик приходит с вопросом: “А что возвращает API если платёж завис в статусе pending дольше часа?” И тут выясняется — в документации этого нет вообще. Ни слова. Хорошая документация — редкость. Поэтому аналитик должен уметь читать её критически, а не просто принимать как есть.Вот на что я теперь смотрю в первую очередь: 1. Есть ли вообще схема ошибок Если описаны только успешные ответы — это красный флаг. Спрашиваю прямо: “пришлите список всех кодов ошибок и их тела ответов”. Если в ответ тишина или “ну, обычно 400 и 500” — закладываю время на уточнения в процессе разработки. Они будут точно. 2. Что значит “опциональное” поле на самом деле Поле помечено как optional. Окей, а что если его не передать? — Подставится дефолт? — Просто проигнорируется? — Или вернётся ошибка, потому что поле опциональное только формально, а по факту обязательное при определённых условиях? Третий вариант встречается чаще, чем хотелось бы. Проверяю на реальном запросе, документации на слово не верю. 3. Идемпотентность — спрашиваю прямо Если интеграция создаёт сущности — платёж, заказ, бронирование — обязательно уточняю: что при повторном запросе с теми же данными? Дубль? Та же сущность вернётся? Для платежей это критично — повторный запрос из-за обрыва сети не должен списать деньги дважды. Если в документации об этом ни слова, это не значит что идемпотентности нет. Значит, про неё просто забыли написать. Спрашиваю у владельцев API напрямую, не додумываю сама. 4. Лимиты и троттлинг Сколько запросов в секунду разрешено? Что происходит при превышении — 429 Too Many Requests, как и положено по спецификации? Или, как бывает на практике, сервис просто молча обрывает соединение либо отдаёт 503? Это нужно знать заранее, а не выяснять на проде в пятницу вечером. 5. Версионирование — какая версия актуальна на самом деле Иногда документация описывает v2, а в реальности эндпоинт всё ещё на v1, потому что миграция не завершена. Смотрю дату последнего обновления документации. Если её нет — тоже звоночек. 6. Тестовая среда — её поведение реально совпадает с продом? Самое неприятное открытие — когда на тестовом стенде всё работает идеально, а на проде логика чуть другая. Уточняю у поставщика API: гарантируется ли идентичность тестовой и боевой среды, или есть нюансы, о которых стоит знать заранее. Документация — это обещание. Но обещания не всегда выполняют полностью. Задача аналитика — найти дыры до того, как их найдёт разработчик в проде, а не после. 🧐 Если было полезно, ставьте реакции, буду делиться больше такой информацией)) ___________ Источник: @ba_and_sa 💙 BA|SA | 💬 BA|SA
И знаете что? Он был прав.С тех пор у меня есть чеклист того, что обязательно должно быть в ТЗ на API. Делюсь. 1️⃣ Название и назначение Не “создать API для заказов”, а конкретно:
Эндпоинт: Создание заказа Используется: мобильное приложение, личный кабинет Контекст “кто вызывает” влияет на авторизацию и требования к нагрузке.2️⃣ Метод и URL
POST /api/v1/ordersТочный адрес, метод, версия. Без этого разработчик придумает сам. 3️⃣ Авторизация
Bearer token (JWT)
Authorization: Bearer {token}
Не написали — получите либо открытый эндпоинт, либо неожиданную схему авторизации.
4️⃣ Тело запроса
Каждое поле с типом, обязательностью и ограничениями:
{
"userId": 123, // integer, обязательное
"items": [...], // array, обязательное, min: 1
"comment": "..." // string, необязательное, max: 500
}
Для необязательных полей — что происходит если не передали? Дефолт? Игнорируется? Напишите явно.
5️⃣ Ответ при успехе
HTTP 201 Created
{
"orderId": 789,
"status": "created",
"createdAt": "2026-06-17T10:00:00Z" // UTC, ISO 8601
}
Формат даты фиксируйте явно — иначе получите локальное время сервера и долгие поиски расхождений.
6️⃣ Ошибки — то, что забывают в 80% ТЗ
422 - Не передан обязательный параметр
404 - Пользователь не найден
401 - Нет авторизации
409 - Товар недоступен
Для каждого кода — тело ответа с понятным error code. Договоритесь о едином формате ошибок на весь проект и зафиксируйте один раз.
7️⃣ Бизнес-логика
Самое недооценённое. Структура понятна — но что происходит внутри?
Пишите явно: заказ создаётся только если все товары в наличии, после создания резервируется остаток, уходит email-уведомление. Если этого нет в ТЗ — разработчик придумает сам. Иногда угадывает. Чаще нет.
8️⃣ Нефункциональные требования
Таймаут: не более 2 секунд Нагрузка: до 100 запросов в минуту
Если нужна защита от дублей — опишите механизм явно через Idempotency-Key в заголовке. Само собой не появится.
Хорошее ТЗ — это не формальность. Это единственный способ получить то, что вы имели в виду, а не то, что разработчик имел в виду за вас 🙂
🧐 Если было полезно, ставьте реакции, буду делиться больше такой информацией))
___________
Источник: @ba_and_sa
💙 BA|SA | 💬 BA|SAPOST /getUser POST /createOrder GET /deleteProduct?id=5✅ Так правильно:
GET /users/{id}
POST /orders
DELETE /products/{id}
HTTP-методы сами несут смысл действия — GET получить, POST создать, PUT/PATCH обновить, DELETE удалить. Глагол в URL — это дублирование, которое потом запутает всех, включая вас саму через полгода.
💡 Живой пример: API интернет-магазина
Есть товары, заказы, пользователи. Поехали.
Базовые операции:
GET /products — список товаров
GET /products/{id} — конкретный товар
POST /products — создать товар
PATCH /products/{id} — обновить часть данных
DELETE /products/{id} — удалить товар
Здесь сразу вопрос, который почти никогда не задают вслух: PUT или PATCH?
PUT — заменяет ресурс целиком и обязан быть идемпотентным — то есть хоть десять раз вызови с одними данными, результат одинаковый
PATCH — обновляет только то, что передали
На практике PATCH выигрывает почти всегда — никто не хочет слать весь объект ради изменения одного поля статуса.
Вложенные ресурсы — и вот тут начинается самое интересное
Заказ принадлежит пользователю. Отражаем это в структуре:
GET /users/{userId}/orders — все заказы пользователя
GET /users/{userId}/orders/{orderId} — конкретный заказ
POST /users/{userId}/orders — создать заказ
Но если заказы нужны и сами по себе — например, в админке — добавляем отдельно:
GET /orders/{id}
И вот моё личное правило, выстраданное на проектах:
Вложенность глубже двух уровней — тревожный сигнал. Если у вас
/users/{id}/orders/{orderId}/items/{itemId}/reviews — это не REST, это маршрут до боли.
Коды ответов — то, на что аналитики машут рукой зря
“Разработчик разберётся” — нет. Или разберётся по-своему, и тогда фронт получает 200 с телом {"error": true} и тихо плачет.
Минимальный джентльменский набор:
200 - Успешный GET, PATCH, PUT
201 - Успешный POST — ресурс создан
204 - Успешный DELETE — тело пустое
400 - Синтаксически сломанный запрос (битый JSON и т.п.)
401 - Не авторизован 403 - Авторизован, но нет прав 404 - Ресурс не найден 409 - Конфликт (дубль email, например)
422 - Запрос понят, но данные не прошли валидацию
500 - Ошибка сервера
Отдельно про 400 vs 422 — это путают постоянно. 400 — когда запрос синтаксически сломан, сервер вообще не смог его прочитать. 422 — запрос понятен, но внутри что-то не то: поле обязательное, формат не тот, логика не сходится. Для ошибок валидации форм почти всегда нужен именно 422.
И 401 vs 403 — классика жанра: 401 = “кто ты вообще?”, 403 = “знаю кто ты, но нет”.
Формат ошибки — договоритесь до начала разработки
Лучший момент для этого — старт проекта. Худший — когда фронт уже написал сорок обработчиков.
✅ Хорошо:
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Поле email обязательно",
"field": "email"
}
}
❌ Плохо:
Второй вариант — это не API, это квест.
{
"status": false,
"msg": "err"
}
Версионирование — заложите сразу
API когда-нибудь изменится. Поменяется логика, добавятся поля, что-то удалится.
Если не заложить версионирование с самого начала — первое же обновление превратится в боль для всех.
Самый простой и понятный способ:
/api/v1/products /api/v2/products___________ Источник: @ba_and_sa 💙 BA|SA | 💬 BA|SA
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
