Slide 1

Slide 1 text

Постоянный рефакторинг архитектуры для снижения уровня сложности Покрыть архитектуру тестами Цель: (качественное описание цели актуальное для бизнеса) Метрики (у каждого бизнеса свои, здесь примерные варианты): – Снизить ТТМ на Х% – Снизить входные требования к компетенции разработчиков, чтобы уменьшить стоимость разработки на Х% – Уметь масштабировать команду на Х за Y времени – Х% новых сервисов создается из готовых компонентов – Увеличить скорость изменения бизнес-процессов без потери качества (сейчас Х) Балансирующие метрики (у каждого бизнеса свои, здесь примерные варианты): – Не повышать ТТМ (сейчас Х) – Не повышать стоимость разработки (сейчас Х) – Не повышать стоимость сопровождения (сейчас Х) – Не повышать стоимость онбординга с ростом системы (сейчас Х) – Удержать качество на текущем уровне (сейчас Х) Актуально для систем, которые развиваются, то есть в них вносятся изменения. Неактуально для систем на пассивной поддержке Если в системе четко разграничена (описана, доступна и 100% актуальна) ответственность бизнес-компонентов и принципы взаимодействия между ними, то 1) разработчик внесет требуемое изменение, которое не увеличит сложность системы (как измерить?), 2) сделает это изменение быстро (отсылка к ТТМ), 3) упростится онбординг новичков (насколько?), 4) упросится коммуникация с бизнесом, 5) разработчик сможет точнее попадать в сроки, потому что разработчик будет знать или быстро найдет в какой компонент вносить изменения, кроме этого для него изменение будет безопасно и предсказуемо по результату Разработчик Боли: – Непонятно, в какую часть системы засунуть код – Страшно вносить изменения – Неясно куда бежать, если поломалось – Давление бизнеса по срокам и качеству – Сложно донести до бизнеса технические проблемы – Долго и больно заходить на новый проект – Долго и больно онбордить новых людей – Ненавижу работать с говнокодом Желания: – Полный контроль над системой (бизнес-процесс и техническая часть) – Я понимаю, почему сделано именно так, а не иначе Руководитель проекта Боли: – Сложная коммуникация с технарями, они не слышат бизнес – Несовпадение ожиданий соотношению оценки и сложности задачи (технари завышают оценку) – Неясно, почему разработка замедляется – Неясно, почему качество понижается – Сложно выполнить KPI из-за просадки и непредсказуемости в технической части Желания: – Технари говорят на мое языке – Технари попадают в сроки – Технари не допускают ошибок в системе – Могу легко расширить, сжать или поменять команду в короткие сроки Визуализация архитектуры для коммуникации внутри команды и с бизнесом Описание ADR (в том числе тестами) Если при внесении изменений можно быстро протестировать архитектуру на актуальность и качество, то 1) разработчик сможет узнать о проблема на этапе написания кода, 2) потенциальные проблемы будут выявлены до запуска продукта в прод, что сэкономит время на поддержке, 3) новичку легко экспериментировать с новым проектом (как в тесте, как и правильно), потому что вносить изменение можно быстро и безопасно Описать архитектуру кодом Если будут готовые кубики на все типовые задачи (сервис получения пользователей из CRM, работа с очередью, работа со всеми базами данных, единая авторизация в экосистеме продуктов и так далее), то 1) разработчик будет быстрее собирать бизнес-задачи, 2) совершать меньше ошибок, 3) разработчик сможет точнее попадать в сроки, потому что большая часть решений будет уже создана 1) с хорошим кодом экспертом в предметной области, 2) протестирована многими проектами и 3) есть у кого спросить в случае проблем Негативные эффекты: – Повышается стоимость управления общей библиотекой (время согласования изменений, раскатка, высокий уровень разработчика для поддержки общей библиотеки, нужен владелец библиотеки) Выстроить процесс создания и сопровождения кубиков в компании Выстроить процесс иннерсорса в компании Если на этапе описания задачи будет понятно за счет каких компонентов ее сделать и какая часть системы должна измениться, то KPI по скорости и качеству релизов будут выполняться, потому что все риски будут видны до старта и неопределенность сократиться Маппинг бизнес-процессов на архитектуру Сайт: http://картагипотез.рф База знаний: https://github.com/Byndyusoft/hypothesismapping Телеграм-канал: https://t.me/hypothesismap Метод стратегического планирования для проектирования следующего шага развития Эта карта – пример того, как можно обосновывать архитектурные задачи на уровне бизнеса Максимум Слабо Средне Степень влияния / стоимости 3 2 1 1 1 1 2 2 Приоритеты расставлены для примера и будут зависеть от конкретной ситуации в проекте 3 3 2 1 1