У нас триває новий проект, і на даний момент розробники розділилися на дві команди, команду A та команду B. Цей проект має дві частини, які потребують розробки протягом усього стеку розробок. Дуже спрощений зразок нашого стека, показаний нижче:
Кожна частина проекту вимагає розробки на всій стеці, тому я, як правило, очікую повного підходу розробника стеків, саме таким чином ми розбивали нашу роботу в команді B, розробляючи та відпрацьовуючи взаємодію між різними частинами.
Проте нещодавно я дізнався, що команда A хоче відповідати за певні частини стеку, і вони пропонують розділити між двома командами, де рівень абстракції даних (і вміст вмісту в рівень даних) обробляється вони без розвитку команди B. Розділення виглядатиме щось подібне до цього:
Мені це здається дуже неприродним. Кожна команда має різні чіткі цілі та часові рамки для досягнення цих завдань, але Команда B матиме залежність від команди А для впровадження функцій. Пропоноване рішення полягає в тому, що загальні інтерфейси визначаються наперед (можливо, існує 2-річний часовий графік проекту, щоб їх було багато). Потім команда A розробляє необхідні біти для цих інтерфейсів на ранніх термінах, незважаючи на те, що вони мають власний набір цілей, в той час як команда B припиняє всі виклики на найближчий короткий термін, щоб вони могли прогресувати.
Я маю занепокоєння щодо цього підходу щодо:
- Інтерфейси можуть змінюватися, і команда A може не мати пропускної здатності або часу для задоволення змін, що змінюються.
- Помилки в коді команди А можуть завадити прогресу Команди Б, і знову ж таки вони не можуть бути пріоритетним для їх виправлення через команду А, яка має іншу чергу пріоритетності.
- Відсутність знань, розповсюджених по командах - Команда B може не повністю зрозуміти, що відбувається під кришкою, і через це може приймати погані дизайнерські рішення.
Висловлюється думка, що багато компаній у цій галузі мають підгрупи і повинні мати можливість це впоратися. З мого розуміння, зазвичай команди розбиваються, як я спочатку очікував (Full Stack), або розбиваючи стек технологій, як показано нижче:
Тож мені цікаво знати, чим займається інша галузь. Чи є більшість розбитків вертикальними / горизонтальними? Чи має сенс діагоналі сенс? Якщо діагональний розкол мав би відбутися, чи мої побоювання здаються обгрунтованими та чи є ще щось, про що повинна турбуватися команда B? Зауважу, що я, мабуть, нестиму відповідальність за успіх чи невдачу команди B.