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

Привет! Меня зовут Кир @akxkir — системный аналитик в Монете — и за 5+ увлекательных лет в IT я успел примерить шляпы фронтендщика, техписателя, лида QA, тимлида и архитектора. Сегодня хочу поделиться взглядом на роль САнов в команде и компании в целом: кто они такие, кому и зачем нужны и какие задачи выполняют. Рассуждения будут полезны новичкам в системном анализе и всем тем, кто имеет счастье работать с САнами.
* Вы уже догадались, но «САном» я обозначаю роль Системного Аналитика (а «СА» — это Системный Анализ).
САн в теории, или Сферический САн в вакууме
Начнём с парочки хрестоматийных определений СА / САна (цитаты сокращены, расставлены акценты).
Совокупность методик и средств, используемых при исследовании и конструировании сложных систем, разработка методов выработки, принятия и обоснования решений при проектировании, создании и управлении системами.
Большая российская энциклопедия
The system analyst role leads and coordinates requirements elicitation and use-case modeling by outlining the system’s functionality and delimiting the system; for example, establishing what actors and use cases exist, and how they interact.
Rational Unified Process
Специалист по решению сложных организационно-технических проблем, имеющих междисциплинарную природу.
Ответственный за анализ потребностей пользователей на предмет возможности их удовлетворения. Также его называют «постановщик задач». Основным продуктом являются организационно-технические решения, оформляемые как техническое задание.
Википедия
Звучит уже достаточно убедительно и монументально, чтобы у начинающего САна случился преждевременный кризис самоопределения. Но ничего, дальше будет хуже! А потом лучше. Но вы держитесь!
САн, как его видят в вакансиях
Продолжим накидывать на вент фактуру — посмотрим на обязанности и требования к САнам, которые чаще всего указывают в вакансиях на hh (примерно по 30 вакансиям). Также с акцентами.
Обязанности:
-
Интервьюировать заказчиков и пользователей.
-
Выявлять, собирать, анализировать и документировать требования.
-
Прорабатывать варианты оптимизации текущего функционала.
-
Предлагать решения возникающих проблем.
-
Планировать RoadMap и вести бэклог.
-
Выступать связующим звеном между разработкой и заказчиком.
-
Прототипировать интерфейсы и проектировать бизнес-процессы.
-
Участвовать в восстановлении документации проекта.
-
Разрабатывать ТЗ.
-
Ставить задачи разработчикам и дизайнерам.
-
Координировать работу нескольких команд разработчиков.
-
Разрабатывать и проектировать архитектуру.
-
Разрабатывать сценарии тестирования и участвовать в процессах тестирования.
-
Контролировать сроки выполнения и этапы работы.
-
Составлять функциональные спецификации.
-
Проектировать use cases.
-
Проектировать внутрисистемные и внешние интеграции (REST API).
-
Проектировать реляционные БД на уровне логической модели.
-
Составлять пользовательскую документацию (руководства, инструкции).
-
Проводить презентации разработанного функционала.
Требования:
-
Знание архитектурных подходов проектирования высоконагруженных систем.
-
Представление о форматах данных, применяемых в веб: XML, HTML, JSON, WSDL.
-
Понимание способов взаимодействия браузера и сервера: куки, сессии, HTTP, AJAX, сокеты.
-
Знания в области технологий: REST, SOAP, SQL, шифрование, балансировка нагрузки.
-
Примеры самостоятельно разработанных ТЗ, алгоритмов, интерфейсов.
-
Высокая коммуникабельность.
-
Умение работать в Jira, Confluence, вести подробную документацию требований и задач.
-
Хорошее понимание технического процесса разработки по Scrum и Agile.
-
Умение разбираться в новых сервисах и интерфейсах.
-
Знание английского языка не ниже Upper-Intermediate.
-
Опыт работы с брокерами сообщений (rabbit, kafka).
-
Понимание жизненного цикла процесса разработки.
-
Общее понимание микросервисной и монолитной архитектуры.
-
Опыт проектирования REST API. Умение писать Swagger, навыки работы в Postman.
-
Навыки декомпозиции работ по аналитике и для продукта в целом.
-
Знание и опыт использования инструментов визуализации: Figma, Visio, Miro, Draw.io.
-
Опыт ведения переговоров, проведения презентаций.
Вы ещё тут? Супер!
Немного переварив определения, вакансии на hh и добавив собственный опыт, можно кристаллизовать следующие темы (в свободном порядке):
-
Требования
-
Декомпозиция задач
-
Пользовательская документация
-
Построение дашбордов
-
Контроль сроков
-
Пользовательские интерфейсы
-
Тестирование
-
Оценка трудозатрат
-
Анализ данных
-
Архитектура
-
Постановка задач
-
Координация команды
-
Исследование рынка
-
Оптимизация процессов
-
Связь с внешним заказчиком
-
Разработка спецификаций
И вот ещё парочка вопросов к САну из уже личной практики:
-
Почему не работает?
-
Когда это сломалось?
-
Партнёры дали обратную связь?
-
Как долго это разрабатывать?
-
А бизнесу это вообще нужно?
-
Что сказать
клиентупартнёру? -
Проверь, оно работает?
-
Вот так можно выкладывать?
САн, что он должен делать по факту. Origins
С фактурой закончили. Теперь давайте разбираться, как со всем этим добром должен управляться САн (спойлер: не должен, ну или точно не со всем). Поговорим о системах.

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

Наша система может пересекаться контекстом с какой-либо другой. Это что касается внешних границ системы. Рассмотрим теперь её внутренности.
Состав системы рассмотрим на примере IT-продуктов, хотя основные принципы будут те же и для других областей.

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

Добавляем сигналы — это могут быть простые сообщения, вызовы, мигания лампочек и прочее. Сигнал может быть входным или выходным.

У неодноклеточных систем со временем появляется несколько источников данных и интерфейсов…

… а потом обработчики делятся на сервисы или модули, которые могут общаться через сигналы и использовать общие данные и разные интерфейсы…
Уже начинает сосать под ложечкой? Не будем доводить пример до реальной системы, да и цель не в этом. Давайте обратим внимание не столько на «объекты» внутри системы, сколько на связи между ними. Заметили, как быстро растёт количество зелёных дорожек? А ведь это именно то, как система работает, без знания этих процессов нам сухой перечень модулей и сигналов ничем не поможет, нам нужно знать взаимосвязи.

Финальная картинка — сложность есть не только внутри самой системы, но и в её контексте: какие роли за что отвечают, какие артефакты используются или порождаются системой. И да, информационной системой, по-хорошему, является весь окружающий его контекст. Хотя для удобства восприятия такое разделение кажется вполне сносным.
Получаем, что для успешного анализа системы (цель анализа тут опустим) САн должен разбираться в составных элементах системы и связях (процессах) между ними. Разумеется, это даёт огромное преимущество и в разборе инцидентов, и в написании документации, и в тестировании — практически для любой работы с системой.
Теперь понятно, из-за чего на рынке такой широкий спектр требований к САну. Ровно поэтому на практике САны часто могут заниматься не своими обязанностями, а это совсем не гуд.
Часто ли вы встречали, например, продактов или менеджеров проекта, которые тестируют свой продукт и пишут руководства пользователя? В то же время QA берёт на себя задачу выявления требований, а техписателю приходится копаться в коде, чтобы составить документы по архитектуре системы?
И где-то в этой суматохе потерялось написание спецификаций API, и теперь фронту и бэку приходится работать не просто последовательно в режиме с взаимными прерываниями, уступками и костылями, но ещё и периодически переключаться на вечные баги от техпода или QA. Но не думайте, что с появлением архитектора и САна всё сразу поменяется — обязанности нужно разделять, компетенции развивать, а границы отстаивать.
Отсекаем лишние обязанности: «Дорогая, я уменьшил скоуп наших САнов!»
Теперь вернёмся к сформулированным темам, рассмотрим их со стороны САна и обозначим явно чужие:
|
? |
Требования (влияние требований на всю систему в прямой зоне ответственности САна) |
|
? |
Декомпозиция задач (САн знает, какие части системы нужно учесть при постановке задачи) |
|
? |
Пользовательская документация (САн тут хороший помощник, но никак не ответственный) |
|
? |
Построение дашбордов (САн часто сам строит отчёты или дашборды, чтобы понять поведение системы) |
|
? |
Контроль сроков (видимо, трудности перевода или менталитета — САн к срокам отношения не имеет) |
|
? |
Пользовательские интерфейсы (было бы замечательно, но нет) |
|
? |
Тестирование (правда?) |
|
? |
Оценка трудозатрат (сложная тема, тем не менее, на своём уровне погружённости САн не сможет дать оценку для той же разработки) |
|
? |
Анализ данных (для анализа часто пригождается знание смежных частей системы) |
|
? |
Архитектура (САн может заниматься архитектурой и должен в этом разбираться, но ответственным тут может быть только архитектор) |
|
? |
Постановка задач (в отсутствии лида — да, но почему у вас нет лида?) |
|
? |
Координация команды (хочется верить, что для этого есть специальная роль, что-то вроде менеджера продукта или руководителя проекта, вот прям на языке вертится) |
|
? |
Исследование рынка (не путать с бизнес-аналитиком) |
|
? |
Оптимизация процессов (процессы — это вообще хлеб для САна) |
|
? |
Связь с внешним заказчиком (только на уровне согласованных коммуникаций с разработчиком или аналитиком внешней системы при интеграции с ней) |
|
? |
Разработка спецификаций (спецификации объединяют требования, процессы и знание системы как целого) |
Закрепим:
-
САн — это междисциплинарный специалист, который точечно применяет знания об общем контексте системы.
-
САн физически не сможет быстро выполнять задачи в любой точке системы (нужно погружение), но он способен оказывать консультации по общим принципам работы её компонентов.
Как это устроено у нас в финтехе. Порождения САна
Перейдём к конкретной конкретике. Конечно, всё зависит и от специфики проекта, и от наличиствующих ролей, и от так-истерически-сложилосьстности — поэтому вот список ролей внутри нашей команды для ориентира:
-
Лид продактов (продукт сложный, нужен координатор-вижионёр).
-
Продакты (по одному на направление внутри продукта, отвечают за бизнесовую часть).
-
САны (в идеале по одному на продакта, но сейчас нас меньше).
-
Два специалиста QA (расшарены на несколько команд).
-
Разработчики (тоже +/- делятся по направлениям).
Итак, в каких процессах у нас участвуют САны:
-
Приём задачи или проблемы (от бизнеса её нам приносит продакт).
-
Поиск затронутых частей системы (собственно, сам анализ).
-
Выявление и формализация требований, техническая постановка задачи (есть хотелка — мы выдаём требования и задачи).
-
Документирование и актуализация требований (по результату работы над задачей смотрим, что фактически сделали, дополняем базу знаний реализованными решениями).
Какие артефакты создают САны (зависит от задачи):
-
Эпики
-
Задачи
-
Архитектурные решения в ADR
-
Контекстные диаграммы в C4
-
Модели процессов в BPMN
-
Спецификации сервисов или компонентов
-
Диаграммы последовательности в Sequence UML
-
Логические модели данных как диаграммы классов UML
-
Спецификации API
-
Дашборды, графики, отчёты по анализу данных
Профилактика: как заметить, что делаешь чужое. Кто, если не САн?
Завершим рассуждения памяткой «Как САну не потерять себя»:
|
Кого замещаем |
Признаки |
Профилактика |
|
Продакт |
Непонятные сроки задачи, кому и зачем она нужна. |
Придерживаться шаблона заполнения задач всей командой. |
|
Тех. поддержка
|
Требуется поиск по логам вместо глубокой аналитики. |
Вести реестр частых ошибок и способов их решения, брать задачу после однозначного указания ошибки по логам. |
|
QA-инженер
|
Составление тестовых сценариев, выявление граничных условий. |
Передавать функциональные сценарии на проработку QA-инженеру до отправки задачи в разработку. |
|
Архитектор
|
Выбор конкретных программных решений. |
Не привязываться к конкретной реализации, если её ещё нужно выбрать. |
|
Разработчик |
Детализация до уровня наименований в коде, привязка алгоритма к технической реализации. |
Согласовывать оптимальный вариант решения задачи с разработчиком, предлагать несколько вариантов. |
Сегодня мы лишь слегка приоткрыли дверцу к такой удивительной, многогранной и неоднозначной роли, как Системный Аналитик. И сколько ещё впереди! А сейчас велком в комментарии — всегда интересен опыт коллег по цеху (как САнов, так и тех, кто за ними наблюдает — не просто так ведь вы открыли эту статью).
ссылка на оригинал статьи https://habr.com/ru/articles/805505/
Добавить комментарий