Цель статьи — помочь понять, нужен ли вам на проекте системный аналитик или нет.
А также предостеречь тех, кто только собирается стать системным аналитиком.

Последние восемь лет я работаю системным аналитиком и до сих пор не перестаю удивляться тому, насколько противоположные мнения об этой роли встречаются даже среди опытных специалистов. Ещё в далёком 2008 году был доклад на близкую тему — «Аналитик в Agile: архаизм или необходимость?». С тех пор прошло семнадцать лет, а ситуация принципиально не изменилась — тема по-прежнему вызывает ожесточённые споры.

Точки зрения кардинально различаются:

Категория

За

Против

Связующее звено

• Переводит язык бизнеса в язык разработки.
• Устраняет противоречия требований.

• Часто просто переписывает слова заказчика.
• Лишняя прослойка между разработчиком и заказчиком.

Формализация

• Превращает смутные «хотелки» в понятные задачи.
• Уменьшает количество багов за счёт точной формализации задач.
• Снижает нагрузку на других участников.

• Придаёт избыточную жёсткость и вредит гибкости.
• Увеличивает сроки, стоимость и документооборот.

Моделирование и сложность

• Удерживает общую модель системы.
• Снижает количество переделок.

• Без экспертизы в предметной области — бесполезен или вреден.
• Смена предметной области — почти как новое образование.

Восприятие роли

• Инженер по смыслу, полезен при высокой сложности и риске ошибок.

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

Многие вопросы о необходимости СА упираются в извечное «это зависит». Однако есть то, что, на мой взгляд, действительно критично — это ключевая компетенция.

Кадр из фильма «Бегущий по лезвию 2049»
Кадр из фильма «Бегущий по лезвию 2049»

Нередко звучит обоснованная претензия, что роль остаётся слишком размытой и специалисты на данной позиции часто оказываются не готовы к тем задачам, которые на них возлагаются, — у многих нет достаточных навыков ни в предметной области, ни в проектировании, ни в глубоком техническом взаимодействии. А тот небольшой процентов «универсалов», которые «могут» очень редко встречаются на рынке. Чтобы стать таким специалистом, нужно накапливать опыт в нескольких направлениях одновременно и постоянно учиться, — а это под силу далеко не каждому.

За последние годы фокус профессии сместился из области анализа в область проектирования. Достаточно открыть несколько вакансий, или поискать в интернете матрицу компетенций одной из крупных компаний. Данную проблему уже не раз затрагивали в статьях Хабр. Однако я хотел бы взглянуть на неё под другим углом и ответить на вопрос: почему так происходит?

Анализ vs Проектирование

Анализ — понятие широкое и многозначное. В контексте системной аналитики оно обычно включает в себя два ключевых направления:
— исследование требований к системе со стороны пользователей и бизнеса;
— исследование и формализация понятий предметной области, включая термины, процессы, сущности и их взаимосвязи.

Эта работа направлена на то, чтобы понять, что именно должно быть реализовано, зачем, и в каком контексте.

Проектирование, в свою очередь, отвечает на вопрос как это должно быть реализовано: на уровне сценариев, интерфейсов, моделей данных, API и взаимодействия систем.

Agile процессы и сроки

В таких подходах как Waterfall или RUP, работы по «проектированию» были выделены в отдельный этап (требования — проектирование — разработка) и было очевидно, в какой момент и кто занимается проектированием. Вот например как пишет об этом Крэг Ларман в своей книге Шаблоны проектирования и UML 2.0 в контексте применения подхода RUP.

В течении первых двух дней разработчики и другие специалисты должны попарно заниматься моделированием и проектированием, строить диаграммы UML на доске или с использованием других средств. Как правило вся эта деятельность выполняется в общей комнате под руководством главного архитектора.

В Agile далеко не всегда очевидно в какой момент происходит проектирование. Работы могут быть распределены так:

Распределение работ по проектированию в Agile
Распределение работ по проектированию в Agile

С учётом того, что нам нужно дать точную оценку в рамках короткой двух-недельной итерации, то мы стремимся все фактические работы по проектированию, которые связаны с неопределённостью сдвинуть как можно дальше влево. Намного легче оценить время реализации функции (отображение проектного решения в код), чем оценить время на проектирование новой функции. Под этапом «Разработка» в последнее время часто понимается буквальное написание кода. И фактическое распределение работ по проектированию во времени, всё чаще выглядит так:

Распределение работ по проектированию в Agile
Распределение работ по проектированию в Agile

Однако системные аналитики тоже захотели свести свои риски к минимуму, и многие команды пошли ещё дальше. Встречи по планированию стали тем местом, где происходит вся «реальная» работа. А под этапом «Аналитика» всё чаще подразумевается оформление проектных решений в спецификацию. Неудивительно, что сегодня общие знания в области проектирования требуются не только от системных аналитиков, но даже от бизнес-аналитиков и менеджеров продукта.

Распределение работ по проектированию в Agile
Распределение работ по проектированию в Agile

Детальное проектирование — трудоёмкий этап

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

Например: если мы оформляем заказ, то нам нужно знать:
  • Состав и типы полей в форме заказа.

  • Обязательность и валидация каждого поля.

  • Поведение при ошибке (UI, тексты, логи).

  • Что происходит после нажатия «Оформить заказ».

  • Что делать, если товара нет на складе?

  • Отмена заказа: до какого этапа, с какими условиями?

  • Что и когда отправляется пользователю (письма, смс, уведомления)?

  • Интеграции с внешними системами (например, платёжные системы, служба доставки). Какой SLA у обработки заказа на стороне партнёров/логистики?

  • Когда заказ «считается успешным»?

  • Если в заказе фактически пришли другие товары — куда попадает заказ, кто его чинит?

  • Разграничение доступа: кто может видеть заказ и редактировать.

  • Как изменяется заказ: редактирование адреса, состава, получателя и пр.

  • Что должно отображаться в истории заказов, и в каком виде.

И это только то, что лежит на поверхности. Когда начинаешь погружаться в каждый из пунктов, то как правило обнаруживаешь много специфики для отдельного проекта или отрасли.

Детальное проектирование это про генерацию микро-идей и про их синхронизацию между всеми участниками процесса

Куда мы тратим время
Куда мы тратим время

Здорово, если в проекте поощряются эксперименты — это позволяет быстрее находить удачные решения. Но на практике такая гибкость встречается редко. Часто поиск оптимального варианта бизнес-процесса, который нужно переложить на IT-систему, занимает месяцы, а иногда и годы.

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

Детали оказывают непропорциональное влияние на успех продукта

Кадр из фильма «Бегущий по лезвию» 2017
Кадр из фильма «Бегущий по лезвию 2049»

В цифровой среде цена одной непродуманной детали может оказаться непропорционально высокой: потерянные заказы из-за сбоя в веб-форме; потерянные деньги при расчётах в транзакции; массовая паника, вызванная ошибочным push-уведомлением. То, что кажется мелочью, может разрушить всю систему — и продукт в целом. Таких примеров немало. Один из самых известных — инцидент с межпланетной станцией Mars Climate Orbiter, которая сгорела в атмосфере из-за простой несогласованности: одна команда инженеров использовала британские единицы измерения (фунты силы), а другая — метрические (ньютоны). И этого никто не учёл.

Если отойти от абстрактных понятий вроде «ориентации на решение комплексных задач», «структурирования и уменьшения неопределённости», «междисциплинарности», то в контексте реальных практик, сложившихся в индустрии, ключевая компетенция системного аналитика сегодня — это детальное проектирование. Архитектор IT-системы решает: будем строить распределённую систему с микросервисами и CQRS (высокоуровневое проектирование). Системный аналитик уточняет: какие события, какое атрибутивное наполнение у потоков данных, как в деталях разграничивается ответственность между сервисами. Разработчик реализует: сервис аутентификации, хранения заказов, шины и API-шлюзы.

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

Место системного аналитика среди других ролей

Роль

Типичные артефакты

Область

Менеджер продукта
Product Owner

Product backlog, roadmap, vision, бизнес-цели.

Ценность

Бизнес-аналитик
Младший продакт

Функциональные требования, бизнес-процессы, User stories.

Ценность. Потребность бизнеса.

Руководитель проекта

План-график (Gantt)

Ресурсы. Процесс. Эффективность.

Методолог
Scrum Master

Скрам-ритуалы, team health metrics.

Процесс. Эффективность.

Архитектор решений

ADR

Решение

Системный аналитик

Use cases
Прототипы UI
Детальные описания
(ERD, Sequence Diagram)

Решение

Специалист технической поддержки

Заявки на сопровождение Презентации для обучения

Сопровождение

Технический писатель

Инструкции для пользователей

Сопровождение

Распространённые ошибки при встраивании СА в процесс разработки:

  • Неясная роль СА в команде. Например, когда специалист в неявном виде выполняет обязанности одной или нескольких смежных ролей. Если на вашем проекте он выполняет функции Методолога и СА, то сделайте это явным для всей команды. Это снимет множество недопониманий и вопросов.

  • Из за наличия СА на проекте, команда не участвует в детальном проектировании, не погружается в предметную область и ждёт готовой постановки. Обратная крайность, когда СА не продумывает детали реализации: не видит узких мест, пограничных кейсов, альтернатив, полагаясь на то, что команда сама со всем разберётся. Процесс проектирования должен быть итеративным с рассмотрением альтернатив всей командой.

Выводы

Прежде чем включать СА в процесс разработки, необходимо:

  • Определить необходимую степень предсказуемости на вашем проекте. Возможно, более разумный подход — выпускать релизы как можно чаще, опираясь на текущее, пусть и «сырое» понимание будущей системы. Иногда это лучше чем застревание в попытках предусмотреть всё заранее, впадая в аналитический паралич, бесконечные обсуждения и продумывание идеального варианта реализации.

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

  • Определить степень вовлечённости участников команды и их готовность тратить значительное количество времени не на код.

  • Посмотреть на команду комплексно, — как на систему. Определить, кто из участников команды:

    • Выявляет, анализирует и согласует требования.

    • Декомпозирует требования в задачи для разработки и формализует их в виде схем, сценариев, спецификаций. На основании каких данных проводится тестирование?

    • Описывает модель предметной области. Удерживает контекст и все ключевые связи системы. Продумывает логику пользовательских процессов в вашей системе.

    • Проектирует API, структуру хранения данных, интерфейсы.   

    • Занимается сопровождением системы и обучением пользователей.

Важно, максимально точно определить функцию СА на вашем проекте и убедиться в том, что на проекте не возникнет дублирующих функций. Цель в том, чтобы создать гибкую, прозрачную и живую структуру.

Комментарии (2)


  1. LinkToOS
    20.05.2025 07:04

    За последние годы фокус профессии сместился из области анализа в область проектирования.

    В этом и проблема. Аналитик - это советник. Это не руководитель, и это не разработчик. Его продукт - информация.
    Главный вопрос при использовании аналитика - от кого должна идти инициатива. Аналитик должен сам искать задачи исходя из общих целей проекта, или он только отвечает на запросы от подразделений? А если нет запросов, то сидит на месте ровно. Тогда в случае недозагрузки его будут привлекать к "непрофильным" работам.


    1. getitsolved Автор
      20.05.2025 07:04

      В продуктовых agile командах, инициатива как правило идёт от PO (Product owner-а). В части "советника", в том смысле, что он не должен перетягивать на себя смежных функций, — соглашусь.