Размышления по архитектуре коллектива (разработка ПО)

Вводная

Я работаю над программным обеспечением с микросервисной архитектурой. Для примера предположим, что мы занимаемся системой, которая помогает врачу лечить домашних животных других людей. Целевая система это здоровые домашние животные.

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

Проблематика

Сейчас команды деляться у нас по ролям пользователей, “Команда клиентов” и “Команда врачей”.

Первая текущая проблемы - это высокая связанность команд, и клиенты и врачи работают с доменами “наблюдение за животными”, “жизненные показатели животных”, “статистика лечения животного”. Как следствие этого разделения у нас не всегда удается понять кто будет ответственен за новую часть системы и могут возникнуть даже дубли каких то частей, например “модуль статистики лечения для врача”, “модуль статистики лечения для клиента”. Решение тут - другая разбивка команд по доменам.

Вторая текущая проблема - это увеличение количества людей в команде настолько, что много времени у нас уже уходит на координацию между людьми. Решение тут - создание трех или четырех команд.

Варианты

Сейчас у нас два варианта деления команд после нескольких встреч по обсуждению проблематики.

Первый (1) - делимся на доменные команды и выделяем кор(enabling)-команду.
Второй (2) - делимся по концепции run/change/disrupt.

Мне нужно сравнить оба варианта по разным критериям, чтобы совместно с коллегами сделать выбор. Приоритет у нас

  • простое управление
  • оптимизация работы
  • меньшая связанность команд (в идеале одна команда делает одну задачу)

Сравнение

2 лайка

Поделюсь ссылками с доп. объяснениями к тому что вызывает вопросы:

Вот тут (https://aisystant.system-school.ru/lk/#/course/practical-systems-thinking/2025-05-19T1258/67933) о том как поискать системы, когда проект с разработкой софта (вы интересно сформулировали, выглядит, как будто программное обеспечение назвали системой). И это наблюдение (с одной из наших систем что-то не так, раз неподходящую штуку так назвали), наводит на желание поинтересоваться графом создателей - у вас там как разместились все участвующие в создании системы, если одна из них софтом оказалась?:)) Ну, или такого графа нет (а значит, в каких условиях внутренних проект успешным стать должен - мы не проверили и будем ошибаться при переходе вниманием между командами…какие то улучшать, а какие то останутся незамеченными…и это не шутка). Вот тут про граф создателей, как его моделируем (https://aisystant.system-school.ru/lk/#/course/methodology/2024-11-27T2259/51622) а объяснения к нему - раньше по тексту. Если такой граф где то в постах есть - поделитесь ссылкой (подскажу где пошло не так)

А табличка сравнения интересная получилась! Должно быть легко с такой обсуждать изменение.

Комментарий - не отменяет восхищения по поводу самостоятельного прохождения руководства, и написания постов! Ссылки - для помощи (если интересно - выше, дальше, сильней))

3 лайка

Вот тут обновил описание по моему текущему пониманию.

1 лайк