У нас начинается новый проект, и на данный момент разработчики разделены на две команды: команду A и команду B. Этот проект состоит из двух частей, которые требуют разработки на протяжении всего стека разработки. Очень упрощенный образец нашего стека показан ниже:
Каждая часть проекта требует разработки по всему стеку, поэтому я, как правило, ожидаю подхода разработчика полного стека, который заключается в том, как мы ломали нашу работу в команде B, разрабатывая и отрабатывая взаимодействия между различными частями.
Однако недавно я узнал, что команда A хочет отвечать за определенные части стека, и они предлагают разделение между двумя командами, где уровень абстракции данных (и размещение контента в слое данных) обрабатывается сами по себе без развития от команды B. Разделение будет выглядеть примерно так:
Для меня это кажется очень неестественным. Каждая группа имеет свои различные цели и сроки для их достижения, но команда B будет зависеть от команды A для реализации функций. Предлагаемое решение заключается в том, что общие интерфейсы определены заранее (для проекта, вероятно, предусмотрено 2 года, поэтому их может быть много). Затем команда A разработает необходимые биты для этих интерфейсов на ранних этапах, несмотря на то, что у них будет свой собственный набор целей, а команда B отложит все вызовы на ближайшую краткосрочную перспективу, чтобы они могли прогрессировать.
У меня есть опасения по поводу этого подхода в отношении:
- Интерфейсы могут измениться, и команда А может не иметь пропускной способности или времени для удовлетворения меняющихся требований.
- Ошибки в коде команды A могут помешать прогрессу команды B, и, опять же, они не могут быть приоритетными для их исправления из-за другой очереди приоритетов команды A.
- Нехватка знаний распространилась по командам - команда B может не полностью понимать, что происходит под капотом, и может из-за этого принимать неправильные проектные решения
Было высказано предположение, что многие компании в отрасли имеют подгруппы и должны быть в состоянии справиться с этим. Насколько я понимаю, команды обычно либо делятся так, как я изначально ожидал (полный стек), либо разбивают технологический стек, как показано ниже:
Поэтому мне интересно знать, что делает остальная часть промышленности. Большинство расщеплений вертикальные / горизонтальные? Имеет ли смысл диагональное разделение? Если произойдет раскол по диагонали, кажутся ли мои опасения обоснованными, и есть ли что-то еще, о чем должна беспокоиться команда B? Отметим, что я, вероятно, буду нести ответственность за успех или неудачу команды B.