Wir haben ein neues Projekt im Gange, und im Moment wurden die Entwickler in zwei Teams aufgeteilt, Team A und Team B. Dieses Projekt besteht aus zwei Teilen, die im gesamten Entwicklungsstapel entwickelt werden müssen. Sehr vereinfachtes Beispiel unseres unten gezeigten Stapels:
Jeder Teil des Projekts erfordert eine Entwicklung über den gesamten Stack. Daher würde ich normalerweise einen Full-Stack-Entwickleransatz erwarten, mit dem wir unsere Arbeit in Team B aufgeschlüsselt und die Interaktionen zwischen verschiedenen Teilen entworfen und ausgearbeitet haben.
Ich habe jedoch kürzlich erfahren, dass Team A für bestimmte Teile des Stapels verantwortlich sein möchte, und sie schlagen eine Aufteilung zwischen den beiden Teams vor, in denen die Datenabstraktionsschicht (und das Einfügen von Inhalten in die Datenschicht) von verwaltet wird selbst ohne Entwicklung von Team B. Die Kluft würde ungefähr so aussehen:
Für mich fühlt sich das sehr unnatürlich an. Jedes Team hat unterschiedliche Ziele und Zeitpläne, um diese zu erreichen. Team B ist jedoch von Team A abhängig, um Funktionen zu implementieren. Die vorgeschlagene Lösung besteht darin, dass gemeinsame Schnittstellen im Voraus definiert werden (es gibt wahrscheinlich einen Zeitrahmen von 2 Jahren für das Projekt, sodass sie zahlreich sein können). Team A wird dann frühzeitig die erforderlichen Komponenten für diese Schnittstellen entwickeln, obwohl es eigene Ziele hat, während Team B alle Anrufe kurzfristig stummschaltet, damit sie Fortschritte erzielen können.
Ich habe Bedenken hinsichtlich dieses Ansatzes in Bezug auf:
- Die Schnittstellen können sich ändern, und Team A verfügt möglicherweise nicht über die Bandbreite oder Zeit, um sich ändernden Anforderungen gerecht zu werden.
- Fehler im Code von Team A können das Fortschreiten von Team B verhindern. Auch hier sind sie möglicherweise nicht die Priorität, um diese zu beheben, da Team A eine andere Priorisierungswarteschlange hat.
- Mangelndes Wissen über die Teams verteilt - Team B versteht möglicherweise nicht vollständig, was unter der Haube vor sich geht, und trifft aus diesem Grund möglicherweise schlechte Designentscheidungen.
Es wurde vorgeschlagen, dass viele Unternehmen in der Branche Subteams haben und in der Lage sein müssen, damit umzugehen. Nach meinem Verständnis werden die Teams im Allgemeinen entweder so aufgeteilt, wie ich es ursprünglich erwartet hatte (Full Stack), oder indem der Technologie-Stack wie folgt aufgeteilt wird:
Ich bin also daran interessiert zu wissen, was der Rest der Industrie tut. Sind die meisten Teilungen vertikal / horizontal? Ist eine diagonale Aufteilung sinnvoll? Wenn eine diagonale Aufteilung eintreten sollte, scheinen meine Bedenken berechtigt zu sein, und gibt es noch etwas, worüber sich Team B Sorgen machen sollte? Zu beachten ist, dass ich wahrscheinlich für den Erfolg oder Misserfolg von Team B verantwortlich gemacht werde.