15 мая 2023 г.
Многие компании целенаправленно ищут системных аналитиков. Но есть и такие, которые включают системный анализ в задачи бизнес-аналитиков или стремятся объединить требования к бизнес- и системным аналитикам в новой роли «функционального аналитика». Может быть, системный анализ — это функция, которую способны выполнять обычные разработчики? Или выделенный системный аналитик все-таки дает команде разработки конкурентное преимущество? Об этом рассказывает Ярослав Боженков, ведущий аналитик IBS InfiniSoft.
Любопытно, что в мировой практике нет профессии «системный аналитик». На зарубежных карьерных сайтах можно найти вакансии на позиции бизнес-аналитиков и аналитиков данных, но в ИТ-разработке даже эти аналитики формально не входят в состав скрам-команд, в которых есть только унифицированные и взаимозаменяемые разработчики.
За границей работа бизнес-аналитика высоко оплачивается, поэтому такие специалисты обычно подключаются на самом старте проекта и выходят из него после подготовки бизнес-требований. Аналитики данных как правило работают в компаниях на постоянной основе как исследователи, подключаясь к разным проектам, но при этом не входят в состав команд разработки.
Если говорить о российском рынке ИТ, то здесь ситуация иная. Системные аналитики есть, они востребованы, и входят в состав команд разработки. Более того, по инициативе Минтруда РФ были разработаны профессиональные стандарты для должности «системный аналитик», в функции которого включены:
- разработка и сопровождение требований к отдельным функциям системы;
- разработка, сопровождение требований и технических заданий на разработку, модернизацию систем и подсистем малого, среднего масштаба и сложности;
- концептуальное, функциональное и логическое проектирование систем;
- управление аналитическими работами и подразделением.
Однако каждая из этих функций, и даже все вместе, могут быть реализованы и другими специалистами, например, разработчиком, архитектором и аналитиком. Но насколько совмещение функций в роли системного аналитика эффективнее их разделения и назначения другим? В первую очередь это зависит от модели разработки.
Разделение функций между несколькими специалистами
Такой подход часто встречается в больших проектах, как правило работающих по методологии Waterfall (каскадная модель). В таком случае:
- проектирование системы — задача конструктора и проектировщика,
- детализация требований — относится к проектированию (хоть задача и более низкого уровня),
- постановка задач разработчикам — обязанность руководителя разработки или менеджера проекта,
- управление аналитическими работами — менеджерская функция.
Основное преимущество в том, что на проект можно пригласить наиболее профессиональных специалистов для каждой из этих функций. К недостаткам относятся существенно более высокие издержки — оплачивается работа нескольких узкоспециализированных профессионалов вместо одного.
Назначение функций универсальному члену команды
Обычно такое встречается у малых команд профессионалов, например, стартапов, которым не требуется техническая детализация задач. Разработчики — суперпрофессионалы, быстро вникают в суть бизнеса и сами находят технические и архитектурные варианты реализации. Получается, что в этой ситуации программист — это и аналитик, и менеджер, и разработчик в одном лице.
Вспомним разработку
Недостаток подхода в том, что таких специалистов на рынке немного. Универсальные профессионалы зачастую создают свои стартапы или уходят в известные на мировом рынке ИТ-компании.
Закрепление группы функций за системным аналитиком
Подход, при котором задачи проектирования, формирования требований, управления аналитическими работами и даже участие в тестировании и поддержке закрепляются за выделенным участником команды — системным аналитиком — это третий вариант. У него есть свои преимущества и ограничения.
С точки зрения логики выполнения функций:
- Системный аналитик важен для детализации требований. Он выступает как посредник между бизнесом, предъявляющим определенные бизнес-требования, и разработкой. Это продуктивно для команды, особенно если у разработчиков недостаточно знаний, времени, а может и интереса, чтобы разбираться в бизнес-области.
- Участие системного аналитика в проектировании системы также будет плюсом. Но только в случае, если у него есть необходимая квалификация, например, проектировщика или архитектора, и он детально знает возможности используемого стека технологий.
- Управление аналитическими задачами создаст процессный фундамент для работы команды с позиции выполнения жизненного цикла требований. В этом случае системный аналитик частично выполняет роль проектного менеджера.
Однако у делегирования функций системному аналитику есть и более существенное обоснование.
Главная причина — экономическая
- В части разработки требований, закрепление функций за системным аналитиком позволяет сократить общую стоимость разработки и упростить ее. Компании смогут принимать на работу junior-программистов, которым в свою очередь обязательно потребуется наставник, способный подсказывать по требованиям и постановке задач. А это как раз системный аналитик.
- В части проектирования, несмотря на то, что системный аналитик все-таки не конкурент архитектору или разработчикам, его роль дает новое качество самому процессу разработки. Он становится центром компетенций по системе. Системный аналитик прекрасно знает, как должна работать система, где находятся последние версии требований, что они означают по сути, что актуально на данный момент, — и тем самым значительно экономит время разработчиков и правильно ставит задачи тестировщикам. В этом его бизнес-ценность.
- В части повышения эффективности процесса разработки в целом, зная, как должна работать система, аналитик не будет простаивать — он принимает участие в тестировании, занимается технической поддержкой, выполняет функции технического писателя и даже менеджера проекта/совладельца продукта, тем самым повышая эффективность работы команды.
Случается, что системных аналитиков рассматривают больше как ресурс «на подхвате» или универсальных игроков, за счет которых можно сэкономить на разработке. Но при этом упускается главное преимущество роли, которое существенно влияет на способность команд эффективно работать в сегменте enterprise-разработки, особенно в условиях недостатка разработчиков высокой квалификации и текучести кадров, — это централизация управления знаниями. Системный аналитик может стать центром знаний о системе, координирующим работу команды и существенно ускоряющим разработку, тестирование и внедрение программного обеспечения. Системный аналитик — специалист высокой квалификации уровня руководителя команды разработки, который может дать весомое конкурентное преимущество и изменить качество самого проекта.
Что же в итоге
В ряде случаев разработка может обойтись и без системного аналитика. Большей частью в стартапах и небольших проектах, в которых начальная концентрация функций в руках топ-разработчиков — органическое условие развития бизнеса. Однако в enterprise-сегменте, то есть в разработке, доработке и внедрении корпоративных приложений для крупных производств, холдингов и финансовых институтов, позиция выделенного системного аналитика имеет существенные преимущества. Его главная ценность — не в разработке требований, как считается традиционно, а в знаниях о системе, концептуальном лидерстве в разработке, и как следствие — другой организации работы, приводящей к снижению стоимости разработки, увеличению ее скорости и повышению качества создаваемого продукта. Работа системного аналитика в первую очередь заключается в организации и систематизации всех основных проектных знаний, что порой играет решающую роль в разработке и приносит значимую пользу как самой команде, так и бизнесу. В случае, если компания не готова вкладываться в поиск собственного системного аналитика, это всегда можно отдать на аутсорс надежному партнеру.
Источник: Ярослав Боженков, ведущий аналитик IBS InfiniSoft