Hard и soft skills системного аналитика: что реально спрашивают
Расскажу историю. Приходит ко мне джун после месяца самостоятельного обучения. Глаза горят, в резюме — UML, BPMN, SQL, Kafka, DDD. Спрашиваю: «Ок, пользователь нажал кнопку «Оплатить», деньги списались, а склад ответил «нет товара». Что делаем?» Пауза. Потом: «Ну… надо посмотреть, что в API возвращается?»
Нет. Не в API дело. В том, что навык — это не строчка в резюме. Это способность применить знание в момент, когда бизнес-требование противоречит техническому ограничению, а продакт уже пообещал заказчику «всё будет завтра».
В этом посте — не абстрактный список «что должен знать аналитик». Это то, что я сам проверяю на собеседованиях. И то, о чём молчат в вакансиях.
Hard skills: технический фундамент
Hard skills — то, что можно измерить. Знаешь SQL или нет. Понимаешь разницу между PUT и PATCH или нет. Нарисовал sequence-диаграмму — и по ней видно, насколько глубоко ты продумал взаимодействие.
Глубина владения жёстко привязана к грейду. То, что простительно джуну, на собеседовании middle — красный флаг. И наоборот: от senior’а ждут не «напишите запрос», а «как вы спроектируете интеграцию, которая не ляжет под нагрузкой».
Диаграмма — карта компетенций системного аналитика. Синим — базовые навыки, с которых стартуют все. Жёлтым — навыки middle-уровня, появляются с опытом. Зелёным и фиолетовым — то, что приходит на уровне senior. Разберу каждый блок.
SQL и работа с данными
Без SQL вы не аналитик. Точка. Даже если работаете в компании, где выборки пишут разработчики. На собеседовании спросят — и не «чем LEFT JOIN отличается от INNER JOIN» (хотя и это спросят), а задачу: «Есть таблицы orders, order_items, products. Выведи топ-5 товаров по выручке за последний квартал».
Junior. SELECT, JOIN (INNER, LEFT), WHERE, GROUP BY, HAVING, ORDER BY. Простые агрегаты: COUNT, SUM, AVG. Подзапросы — понимать, что это, и уметь прочитать чужой. Оконные функции — знать о существовании ROW_NUMBER() и не падать в обморок при виде OVER (PARTITION BY ...).
Middle. Оконные функции — свободно: ROW_NUMBER(), RANK(), LAG(), LEAD(). CTE (WITH). Понимание плана запроса (EXPLAIN), индексов — когда запрос тормозит, вы видите, почему. Оптимизация JOIN и фильтрации.
Senior. Проектирование структуры данных: нормализация, денормализация под отчёты. Понимание, как выбор архитектуры БД влияет на интеграции и производительность системы. Вы не просто пишете запрос — видите картину целиком.
REST API и интеграции
Аналитик без понимания API обречён писать требования уровня «система А передаёт данные системе Б» — и разработчик будет переспрашивать каждую строчку. Начните с REST API: основные принципы — это база.
Junior. Методы (GET, POST, PUT, PATCH, DELETE), коды ответов (200, 201, 400, 404, 500), структура запроса/ответа. Форматы: JSON, XML (хотя бы узнавать в лицо). Умение прочитать OpenAPI/Swagger-спецификацию.
Middle. Проектирование контрактов: какой метод для какой операции, какие поля в теле ответа. Пагинация, фильтрация. Идемпотентность — что это и зачем. Статус-коды глубже стандартных: 201, 202, 204, 409, 422. Асинхронные взаимодействия: очереди, колбэки.
Senior. Выбор стиля интеграции: REST vs gRPC vs GraphQL vs асинхронные очереди. Проектирование API с учётом обратной совместимости и версионирования. Понимание, как выбор протокола влияет на архитектуру системы.
Моделирование: UML, BPMN, ERD
Диаграмма в Confluence — это не «украшение страницы». Это инструмент, который либо снимает вопросы, либо их создаёт.
Junior. Use Case-диаграмма: акторы и их цели. Sequence-диаграмма для простого сценария (один запрос — один ответ). Activity-диаграмма для линейного процесса.
Middle. Sequence-диаграмма для сложного сценария с ветвлениями, альтернативными потоками, таймаутами. BPMN: пулы, дорожки, шлюзы (XOR, AND, event-based). ERD: сущности, связи, кардинальность.
Senior. Нотацию выбираете под задачу, а не наоборот. UML для взаимодействия компонентов. BPMN для сквозных бизнес-процессов. ERD для модели данных. C4 для архитектуры системы в целом. И можете объяснить команде, почему здесь нужен BPMN, а там хватит трёх стикеров на доске.
Архитектура
Для junior’а слово «архитектура» звучит страшно. Но даже на старте полезно различать базовые понятия — хотя бы чтобы понимать, о чём спорят разработчики.
Junior. Разница «монолит — микросервисы» на уровне аналогий. Что такое «сервис», «база данных», «брокер сообщений» — общее представление.
Middle. Монолит, модульный монолит, микросервисы — плюсы и минусы каждого. Зачем нужен API Gateway и как он вписывается в картину. Брокеры сообщений на уровне: топик, партиция, consumer group.
Senior. Проектирование архитектурных решений. DDD: bounded context, агрегаты, доменные события. Паттерны: CQRS, Event Sourcing, Saga, Outbox. И что важнее всего — умение объяснить, почему здесь микросервисы не нужны, даже если «все модные ребята так делают».
Проектирование БД
Junior. Что такое таблица, первичный ключ, внешний ключ. Связи «один-к-одному», «один-ко-многим», «многие-ко-многим» на уровне концептуального понимания.
Middle. Нормализация до 3NF. Понимание, когда денормализовать (отчёты, витрины). Индексы: какие типы бывают, как влияют на выборки и вставки.
Senior. Выбор между реляционной БД и NoSQL под задачу. Проектирование схемы, которая не превратится в тыкву через полгода. ACID vs BASE, eventual consistency — понимание компромиссов.
Soft skills: о чём молчат в вакансиях
Формально пишут «коммуникабельность», «умение работать в команде». На деле soft skills — это конкретные поведенческие паттерны, которые видны за первые 10 минут собеседования.
Интервью стейкхолдеров
Навык, который отличает сильного аналитика от ходячей спецификации. Вы приходите к заказчику, который не знает, чего хочет. Ваша задача — вытащить требования, которые он сам не осознаёт.
Что спрашивают на собеседовании: «Расскажите, как проводили интервью с заказчиком. Самый сложный стейкхолдер и как вы с ним работали?»
Признак джуна: задаёт вопросы по списку, боится перебивать, не уточняет противоречия. Признак сеньора: слушает, переспрашивает, ловит несостыковки «на лету» и тут же их разрешает.
Управление требованиями
Вы собрали 200 требований от семи стейкхолдеров. Часть противоречат друг другу. Часть — «хотелки» без бизнес-ценности.
Junior. Фиксирует в Confluence, делает табличку. Middle. Приоритизирует: что в MVP, что потом, что — «нет, обсуждаем ещё раз». Связывает требования с бизнес-целями. Каждое требование отвечает на вопрос «какую проблему пользователя это решает?». Senior. Видит систему требований целиком: какие тянут архитектурные изменения, где конфликты, как изменение одного атрибута влияет на пять других.
Фасилитация встреч
Собрать 8 разработчиков, продакта, тимлида и стейкхолдера в одной комнате или зуме и провести встречу, откуда все вышли с решениями — навык, которому не учат на курсах.
Типичный кейс с собеседования: «Команда спорит о подходе к интеграции. Разработчики хотят REST, архитектор — gRPC, продакту всё равно, лишь бы вчера. Ваши действия?»
Плохой ответ: «Я задокументирую оба варианта и отдам на решение тимлиду». Хороший: «Сначала пойму критерии выбора — latency, объём данных, кто потребители, есть ли стриминг. Потом свожу всех на встречу с конкретными аргументами по каждому критерию. Решение фиксирую в ADR».
Презентация и защита решений
Вы спроектировали решение. Дальше его нужно продать — команде, архитектору, заказчику.
Junior. Показывает диаграмму и ждёт вопросов. Middle. Рассказывает, какие альтернативы рассмотрел и почему выбрал этот вариант. Senior. Предвидит вопросы и возражения до презентации и встраивает ответы прямо в рассказ. Структура: проблема → варианты → выбор → риски → план миграции. Без слайда «Спасибо за внимание» в конце (серьёзно, уберите его).
Переговоры: приоритеты и компромиссы
Заказчик хочет фичу X, разработчики говорят «три месяца», продакт настаивает «через две недели». Вы посредине.
На собеседовании проверяют гибкость мышления. Можете ли предложить альтернативу, которая решает 80% проблемы за 20% времени? Понимаете разницу между «нужно сейчас» и «нужно правильно»?
Менторство и наставничество
Senior-аналитик — это не только «делает сложные задачи». Это «делает команду сильнее». Код-ревью требований, онбординг новичков, развитие внутренних стандартов.
Спросят: «Как вы онбордили новичка? С какими ошибками сталкивались и как их исправляли?» Если ответ — «я не занимался менторством» на позицию senior, дальше можно не продолжать. Не потому что вы плохой аналитик. Потому что на этом грейде менторство — часть работы, а не опция.
Что реально спрашивают: статистика по грейдам
По моему опыту проведения собеседований и разговорам с коллегами-нанимателями, распределение фокуса выглядит так:
| Грейд | Hard skills | Soft skills | Типичные вопросы |
|---|---|---|---|
| Junior | 80% | 20% | SQL-задача, разбор API, User Story по шаблону |
| Middle | 60% | 40% | Проектирование контракта, кейс со стейкхолдером, приоритизация требований |
| Senior | 40% | 60% | Архитектурное решение, конфликт интересов, менторство, стратегия |
Юниору прощают пробелы в коммуникации — нанимают за способность быстро учиться и делать руками. Senior’у простят незнание конкретной технологии (выучит за неделю), но не простят неумения договариваться.
Откуда брать скилы, если нет коммерческого опыта
Картинка ясна. Что делать новичку без живых стейкхолдеров и рабочих проектов?
База. Пройдите путь системного аналитика с нуля — закроете фундамент. SQL — любой тренажёр (SQL Academy, SQL-Ex, LeetCode, раздел Database). REST API — читайте документацию публичных API (GitHub, Stripe) и дёргайте через Postman. Диаграммы — качайте draw.io или PlantUML и перерисовывайте бизнес-процессы сервисов, которыми пользуетесь.
Практика. Берите опенсорс-проекты и пишите к ним спецификации. Свой пет-проект: придумайте сервис, опишите требования, нарисуйте диаграммы, спроектируйте API. Без строчки кода — уже готовый кейс для портфолио.
Soft skills. Тренировать переговоры на котиках не выйдет. Но можно: ходить на митапы и задавать вопросы, участвовать в опенсорс-дискуссиях, вести технический блог (письменное формулирование мыслей — та же тренировка). Записывайте себя на видео при объяснении технической темы — смотреть больно, зато видны все «э-э-э» и слова-паразиты. Через пять попыток прогресс будет заметен невооружённым глазом.
Чек-лист для самопроверки
Это не экзамен. Ориентир: если честно отвечаете «да» на большинство пунктов своего грейда — порядок. Если половина вызывает вопрос «а что это?» — знаете, куда копать.
Junior
- Пишу SELECT с JOIN и GROUP BY без гугления синтаксиса
- Отличу PUT от PATCH без подсказки
- Могу объяснить, что такое REST и почему это не просто «JSON через HTTP»
- Нарисую Use Case-диаграмму и sequence для простого сценария
- Понимаю разницу между функциональными и нефункциональными требованиями
- Напишу User Story по шаблону и не перепутаю «я как…» с «система должна…»
Middle
- Оконные функции в SQL — без гугления
- Спроектирую REST API с пагинацией и фильтрацией
- BPMN-процесс с тремя участниками и ветвлениями — рабочая задача
- Проведу интервью со стейкхолдером и вытащу скрытые требования
- Приоритизирую бэклог и объясню заказчику, почему его хотелка не в MVP
- Понимаю разницу между синхронным и асинхронным взаимодействием сервисов
Senior
- Выбираю архитектурный стиль под задачу и защищаю выбор перед архитектором
- Проектирую интеграции, которые не развалятся при росте нагрузки в 10 раз
- Фасилитирую встречи со столкновением интересов трёх разных отделов
- Менторю middle-аналитиков и вижу типичные ошибки за первый обзор спецификации
- Понимаю, когда микросервисы — зло, а модульный монолит — спасение
- Могу объяснить CTO, почему DDD в нашем случае окупится через год, а не через месяц
Обнаружили, что до целевого грейда не хватает пары пунктов? Отлично. Это не «я недостаточно хорош». Это «я знаю, что качать дальше». А понимание, куда расти — само по себе навык, которого многим не хватает.