Несколько раз мне приходилось выступать в роли архитектора на проектах по созданию информационных систем с большим количеством заинтересованных участников — стейкхолдеров. Могу сказать, работа эта не из лёгких: пока соберёшь под сотню необходимых виз — весь взмокнешь. В этом очерке хочу рассказать о подходах, которые, на мой взгляд, могут облегчить жизнь архитектору и команде проекта.
Проекты с большим количеством участников, как правило, имеют следующие особенности:
Изначально невнятно поставленные цели и задачи. Большое количество согласующих у заказчика приводит к тому, что разные участники видят результаты проекта по-разному и на этапе подготовки и внутреннего согласования ТЗ нередко сходятся лишь на общих формулировках (как говорится, «для ясности замнём»), тем самым перенося проблему окончательного выбора и согласования решений на исполнителя работ.
Необходимость коммуникации с большим количеством стейкхолдеров. Часто их взаимодействие происходит через исполнителя работ — между собой они не общаются. Заказчик просто не видит своей ответственности за организацию эффективной коммуникации внутри проекта.
Размывание ответственности за конечный результат в целом по проекту. Большое количество заинтересованных сторон обычно говорит о важности решаемой задачи. Если у проекта много заинтересованных участников, то, скорее всего, проектируемая система, даже если нужна не всем, точно затрагивает интересы многих. Именно потенциально высокая значимость результата и много заинтересованных сторон формируют риски размывания ответственности.
По сути этот пункт — следствие трёх предыдущих. В ходе реализации подобных проектов всегда возникает потребность в серьёзной корректировке ключевых решений. Причём в условиях бюджетных ограничений и необходимости согласования этих изменений с большим количеством заинтересованных сторон.
Конечно, всегда хочется попасть в хорошо организованный проект с ясными целями и задачами, мотивированными участниками и налаженной коммуникацией. Однако такая возможность выдаётся далеко не всегда. Чтобы минимизировать риски подобных проектов, наша команда использует следующие подходы.
Первое: действовать в русле методик адаптивной разработки (Agile). Для этого необходимо стараться вести техническую нарезку реализуемых задач проекта в соответствии со структурой стейкхолдеров. Это позволяет конкретизировать и решать задачи с каждой группой стейкхолдеров в рамках коротких циклов разработки (обычно 2–3 недели), а после — обеспечивать конкретизацию и согласование принятых решений по кругу ведения. Таким образом, стейкхолдер понимает и принимает зону своей ответственности, а мы уходим от ситуации, когда на этапе сдачи работ часть стейкхолдеров начинает делать замечания по всему проекту, выходя за пределы своей компетенции. Безусловно, выделение задач по стейкхолдерам сильно зависит от компетенции заказчика: сделать всех ответственными за всё гораздо проще.
Второе: процесс доставки ПО должен быть максимально простым. Иными словами, текущие изменения должны моментально попадать в тестовую или продуктивную среду. Обычно здесь требуется решить ряд вопросов:
-
Проблема хранения данных. Структура данных на начальном этапе может значительно изменяться. Кроме того, часто, действуя в русле Agile, мы побуждаем заказчика сразу пользоваться системой в каком-то объёме. При этом потеря данных становится нежелательной.
Наше базовое решение — реляционная СУБД в самых простых конфигурациях и собственная разработка Celesta в качестве средства взаимодействия с СУБД. При выработке этого решения мы пользовались следующими аргументами:
(а) Реляционные базы данных — самое на настоящий момент распространённое, достаточно скоростное и функционально наиболее зрелое решение для хранения данных.
(б) Стандартную проблему автотестов и миграций в реляционных СУБД мы решаем при помощи Celesta, которая стала чуть ли не «серебряной пулей» во многих наших проектах.
(в) Использование кластера реляционных СУБД — это сложности в развёртывании и обновлении БД, никому не нужные на начальных этапах проекта.
Процесс доставки должен быть быстрым и находиться в полной компетенции исполнителя. По сути это означает наличие процедуры автоматической доставки всех обновлений на сервер, где размещено разрабатываемое ПО. Варианты типа «приходи с дискеткой на выделенный компьютер и переноси» или «подключайся по VPN и заливай» мы считаем заведомо деструктивными. Понятно, что такой процесс должен стать результатом взаимодействия — как минимум, с ответственными за инфраструктуру и информационную безопасность (ИБ). Понятно также, что качество процесса должно поддерживаться согласованными технологическими и организационными мерами (но это обязательное условие успеха). Кроме того, исполнитель должен обладать определённой свободой в изменении архитектурных решений — безусловно, при полной прозрачности текущей архитектуры для всех участников. Здесь мы разделяем подходы, принятые в проекте DocHub.
-
Необходимо внимательно отнестись к проблеме информационной безопасности. Решения в части ИБ не должны блокировать принятие и корректировку архитектурных решений.
Часто в условиях высокой регламентированности требований к ИБ возникает тенденция к формальным консервативным решениям — например, сертифицировать всё во ФСТЭК. Однако мы автоматизируем реальные бизнес-задачи, и такой подход к решению вопросов ИБ часто блокирует выработку и корректировку требуемых заказчику решений.
Мы можем выбрать готовую платформу, обеспечивающую заданные параметры ИБ, например, решения «1С-Битрикс», сертифицированные ФСТЭК. Однако при всех возможностях «1С-Битрикс» мы должны понимать, что при таком подходе за рамки этого решения мы выйти не сможем.
Если же решение задач проекта требует обеспечить высокую свободу выбора технологий, или готовых сертифицированных платформ для нашей задачи просто нет, специалисты по информационной безопасности заказчика и исполнителя должны находить оптимальные решения, а не «занимать принципиальную позицию». Существующая нормативная документация и рынок средств информационной безопасности предоставляют для этого большой выбор вариантов.
Третье: максимально использовать автоматизированную документацию. Проект должен быть прозрачен: публикация API, автоматизированные скриншоты, автоматическая генерация схем рабочих процессов в текущем и прогнозируемом состоянии крайне важны для координации всех участников проекта.
Для свода мы используем AsciiDoc. Из простых текстовых разметок Asciidoc наиболее функционален. Также он позволяет представлять документацию практически без ограничений в форматах текстовых процессоров (docx/odt). Указанные форматы наиболее универсальны и привычны для ревизии и согласования, поэтому их использование на проектах с большим количеством стейкхолдеров неизбежно.
Четвёртое: на проектах мы стараемся максимально использовать широко распространённые открытые технологии, хотя бы на первых порах. Странно заплатить за лицензию, чтобы потом понять, что нужна другая. При необходимости выбрать программную технологию мы анализируем три показателя: активность вклада в код, количество скачиваний артефакта за последний период, количество упоминаний на Stack Overflow (если по технологии много обсуждений, значит, легче найти решение).
Для себя мы определили базовый пул технологий, от которого стараемся отталкиваться. При этом мы толерантно относимся к возможным отходам от стандарта, главное — тщательно анализировать риски.
Наконец, пятое: с самого начала проекта мы стараемся не идти на компромиссы в части структурирования, кодирования и тестирования решений, даже если предполагается частое изменение этих решений. Многие считают так: давайте сделаем что-нибудь и как-нибудь, а потом уже будет и DDD, и автотесты, и всё-всё-всё. Качество разрабатываемых решений сокращает время на разработку, делает проект легко документируемым и прозрачным, обеспечивает условия для его оперативной корректировки.
Понятно, что не всегда удаётся реализовать все указанные пункты. Однако все участники должны чётко понимать: любое отступление от указанной схемы повышает риски проекта.
Буду благодарен всем, кто поделится своими подходами к реализации аналогичных проектов.
Комментарии (8)
alobzov
26.08.2022 16:41+2Ещё одна из рекомендаций в случае множества стейкхолдеров - заручиться поддержкой руководителя. В случае разногласий между заинтересованными сторонами руководитель примет финальное решение, окончательное и не подлежащее обсуждению. В случае затягивания сроков руководитель простимулирует подчинённых. Проблема лишь в том, что руководители обычно очень занятые люди и едва ли могут уделять достаточно внимания всем проектам, происходящим в организации
fiddle-de-dee Автор
26.08.2022 18:14+2Это точно. Мне, правда, только один раз удалось участвовать в проекте, где руководитель был прямо заинтересован в результате проекта. Было здорово. Обычно же есть какое-то головное подразделение со стороны заказчика, которое всеми правдами и неправдами выстраивает работу с другими участниками, в т.ч. ИБ, инфраструктурой. Причём у всех подразделений свои руководители, цели и задачи.
XaBoK
26.08.2022 20:10Ваши предложения по ситуации, когда одного руководителя нет? Вот пара примеров:
общая инфосистема 5 разных компаний - у каждой свой представитель в проекте и часть бюджета. Заказчика как бы и нет - законодатель обязал.
три компании являющиеся частью холдинга, требование идёт от материнской компании, но там чисто финансы и никакого понимания бизнеса. Они не хотят и не могут диктовать как строить ибо не знают что нужно строить.
франшизы - контроля над купившими бренд в чистом виде нет, и попытки продавить что то сразу упираются в иск о нечестной конкуренции.
burokrat
26.08.2022 21:47+2-
общая инфосистема 5 разных компаний - у каждой свой представитель в проекте и часть бюджета. Заказчика как бы и нет - законодатель обязал.
Если законодатель обязывает - то он должен четко выставить требования к ИС. Если он их не выставил, то надо их с него истребовать (трактовка закона, как правило, за ФОИВ по компетенции). Когда требования к ИС понятны - совместно компании выбирают компетентного исполнителя, создают совместную рабочую группу с исполнителем для решения технических вопросов и вперёд. Исполнителя надо выбирать с условием, что он же будет сопровождать и развивать ИС
три компании являющиеся частью холдинга, требование идёт от материнской компании, но там чисто финансы и никакого понимания бизнеса. Они не хотят и не могут диктовать как строить ибо не знают что нужно строить.
Распространённая сейчас ситуация. "Кто не знает, в какую гавань ему плыть, для того не бывает попутного ветра." Исполнитель в данной ситуации сделать ничего путного не сможет. Практически гарантированно деньги улетят на ветер. Если у исполнителя вдруг найдётся специалист, который сможет решить такую задачу, то его надо срочно ставить руководителем данного холдинга.-
франшизы - контроля над купившими бренд в чистом виде нет, и попытки продавить что то сразу упираются в иск о нечестной конкуренции.
О системе контроля надо думать до продажи бренда. Попытки догнать ушедший поезд будут зависеть от конкретной ситуации. Ошибки при принятии управленческих решений верхнего уровня всегда ведут к большим потерям (затратам).
XaBoK
26.08.2022 21:56Всё правильно, вот только клиентов не выбирают. Во всяком случае, мне такой роскоши не предоставляют. Да и вообще, чем круче компания - тем сложнее клиенты. Поэтому приходиться придумывать какие-то трюки и хотелось бы услышать об опыте других в подобных ситуациях. Вот только этого то в статье и нет.
-
XaBoK
У меня сложилось впечатление, что середину поста случайно удалили... Да, в энтерпрайзе даже в проектах интеграции, не говоря уж про разработку:
Какой совет архитектору то? Agile? Каждый директор-рак-лебедь-щука не знает точно куда ему тянуть свою часть, не говоря уже об общей картине. И тут архитектор говорит: "а давайте по чуть-чуть" и сразу всё наладилось? Они так и не сдвинутся с места (проверенно и не раз). И второе, что нас интересует - это CI-CD? Если б было так сказочно, то и архитектор не нужен. Коучей хватает, а вот заводы стоят.
Единственное, что верно подмечено - это ИБ. Все эти важные держатели стейков всегда забывают спросить безопасников. А те в свою очередь будут тешить своё ЧСВ, заявляясь нежданно в середине процесса и требуя всё переделать, остановить и сертифицировать.
fiddle-de-dee Автор
По поводу Agile. На таких проектах интуитивно хочется уйти от Agile. Хочется сначала найти точки согласования. Но в моей практике удалось сдвинуть несколько проектов с десятками заинтересованных лиц. Как только люди чётко видят свою зону ответственности и ее наполнение, они успокаиваются и начинают быть конструктивными.
С CI-CD не совсем понял комментарий, почему архитектор не нужен. По опыту, как только CI/CD начинает быть регулярным (например, два раза в сутки) сразу становится легче взаимодействовать с заинтересованными лицами и узлы проекта начинают развязываться на глазах. Возможно, мне везло, но этот процесс всегда удавалось выстроить вопреки, а не благодаря заказчику.
XaBoK
Все вышеописанные проблемы архитектору мешают на начальной стадии. Если у вас уже деплой, то какие могут проблемы со стейкхолдерами и целями? У вас уже и архитектура готова и бэклог выстроен. Требования пусть хоть каждый час меняются - это уже проблема продакта и проджект менеджера. Смена архитектуры - функции времени и денег.
А вот что делать на старте без чёткого понимания куда нужно строить путь и без команды менеджмента? С набором эгоцентричных одиночек можно ломать, а не строить. Нулевой спринт и есть самая проблема - когда надо заложить основу. Потом уже можно жевать по ложечки за раз. Как заставить стадо собраться и сделать выбор? Какой набор инструментов и практик есть у архитектора в данной ситуации? Я ожидал прочитать именно про это...