So strukturieren Sie ein Softwareentwicklungsteam

Angesichts eines 15-fach starken Softwareentwicklungsteams, das an einzelnen Projekten sowie kleinen, mittleren und großen Projekten arbeitet; Wie kann man dieses Team am besten strukturieren und was ist die beste Softwareentwicklungsmethodik?

Hintergrund:
Die Abteilung bestand bisher aus:

  • CTO
    • Support-Entwicklungsteam (1x Lead, 2x Support-Entwickler)
    • 4x Entwickler

Die Abteilung wuchs auf 10x Entwickler an, also wurde beschlossen, sich in 2x Entwicklerteams mit jeweils 5x Entwicklern aufzuteilen:

  • CTO
    • Team 1 (1x Lead/Manager, 4x Entwickler)
    • Team 2 (1x Lead/Manager, 4x Entwickler)

Die Abteilung verwendet Scrum, wobei jedes Team seinen eigenen Sprintzyklus hat (synchronisiert).

Jetzt, wo die Abteilung viel größer ist, muss eine neue Umstrukturierung stattfinden. Einige Probleme wurden identifiziert:

  • Feste Teams sind aufgrund der Wissenssilos einzelner Entwickler problematisch
  • Die Beförderung von Entwicklern in Führungs-/Admin-/Line-Management-Rollen führt zum Verlust wichtiger Entwicklerressourcen

Wir haben auch ein PMO bestehend aus 3x PMs und 2x BA. Dieses Team ist von der Entwicklung getrennt (nicht höher oder niedriger, sondern daneben) und fällt unter die Betriebsabteilung (COO).

Die Verwendung von Scrum hat seine Probleme:

  • Kein dediziertes Support-Team bedeutet, dass die Wartung in ein Scrum-Team fallen muss. Das funktioniert nicht so gut. (Ein KanBan-Team könnte für die Unterstützung besser geeignet sein).
  • Das Unternehmen übernimmt maßgeschneiderte Arbeit von vielen Kunden, was zu gemischten Veröffentlichungsterminen führt, die meistens nicht in den Sprint-Release-Plan passen.

Meine Gedanken

  • Ich denke, eine reaktionsschnellere Methodik würde besser funktionieren (aber ich bin hier kein Experte - ich bin Entwickler/Leiter) und eher pro Projekt als pro Team.
  • Ich denke, die Entwicklungsteams müssen flüssiger sein und pro Projekt bauen, anstatt eine feste Anzahl von Nx-Entwicklern pro Team. Hier wird das Linienmanagement zum Problem. Fachliche Führung und Linienführung werden hier mangels entsprechender Ressourcen/Zeit zum Problem.
Flem, was versuchst du zu erreichen? Was sollen die Teams tun? Es gibt viele Möglichkeiten, Teams zu strukturieren, wobei unterschiedliche Strukturen für eine Sache gut sind und andere Strukturen gut sind, um andere Ziele zu erreichen.
Die Hauptziele sind: schnelle Entwicklung, hohe Qualität, für viele Projekte. Einige Projekte erfordern nur einen Entwickler, während andere (weniger) 4 oder 5 erfordern. Ein durchschnittliches Projekt würde 2-3 Entwickler erfordern.
Da Sie ein Entwickler/Lead sind, haben Sie Einfluss auf Ihren CTO (dh ist diese Frage von praktischem Wert)? Kann jemand anderes den Großteil der administrativen Aufgaben übernehmen, die den Leads aufgebürdet werden, damit sie sich auf ihre Teams konzentrieren können? Der Mangel an engagierter Wartung in Ihrer Abteilung ist ein starker Nachteil ... Sie können es auch mit kleineren Teams versuchen (gibt Flexibilität zwischen den Teams, behält eine gute Moral in ihnen).
@DeerHunter Ja, das ist eine praktische Frage. Verwaltungsaufgaben sind ein großer Teil des Problems. Leads sind Vollzeitentwickler, Scrum Master und Linienmanager. Dies führt dazu, dass Leads übermäßig lange arbeiten.
Vielleicht brauchen Sie einen Pool von Verwaltungsassistenten, um den Leads die Routineaufgaben abzunehmen ... Die Einstellung eines Assistenten ist viel billiger, als einen qualifizierten Lead in Asyl zu überarbeiten.
Was sind die Unternehmensziele? Sicher, es ist gut, ein Team zu haben, das Dinge schneller, billiger und besser erledigt. Aber warum ist das Team dort? Warum ist es gewachsen? Die Struktur sollte optimiert werden, um den Zielen der Organisation zu entsprechen.
@MarkPhillips Es ist wirklich so einfach wie: Verkäufe verkaufen mehr, Entwickler müssen mehr bauen. Wir haben eine Kernplattform. Vor dem Wachstum erhielten die meisten Kunden 80-90 % Plattform, 10-20 % maßgeschneiderte Lösungen. Es hat jetzt eine Verschiebung gegeben und die Zahlen liegen eher bei 10-20 % Plattform zu 80-90 % maßgeschneidert. Für eine maßgeschneiderte Entwicklung brauchen wir also ein größeres Team. Aber ein großes Team ist sinnlos, wenn es nicht effektiv ist.
Flem, verkaufen Sie kundenspezifische Entwicklungen oder ein definiertes Produkt? Warum hat sich die Verschiebung in der Aufschlüsselung ereignet? Das Verständnis dieser Art von Variablen kann wirklich einen Unterschied machen, wenn es darum geht, die Struktur richtig hinzubekommen. Bitte teilen Sie weitere Informationen über das Unternehmen und den Kontext, in dem das Entwicklerteam tätig ist.
Wir haben ein Verkaufsteam, das sich auf den Verkauf eines Standardprodukts konzentriert, und ein Verkaufsteam, das dasselbe Standardprodukt verkauft, jedoch mit maßgeschneiderten Funktionen. Die kundenspezifischen Features machten früher 10-20 % (vor 2 Jahren) aus, heute machen sie eher 80-90 % aus. Es gibt verschiedene Gründe für diese Verschiebung, einer davon, dass Kunden mehr für etwas Einzigartiges bezahlen, ein anderer, dass die Möglichkeit, alles zu bauen, was ein Kunde will, bedeutet, dass Kunden leichter zu finden sind – wir können selektiver sein. Der Fokus liegt nun auf 80-90% Maßarbeit. Wir haben normalerweise 3-8 Projekte gleichzeitig in Arbeit. Der Eingangsrückstand ist lang.

Antworten (3)

Haben Sie ein Squad-System in Erwägung gezogen? Der immer ausgezeichnete Henrik Kniberg hat einen Artikel , den Sie vielleicht nützlich finden, wie dieses System bei Spotify verwendet wird.

Das Grundprinzip ist wie folgt:

  1. Vertikale Multi-Skilled-Teams (Produkt, Entwicklung, Design) arbeiten an einem einzelnen Produkt oder Bereich der Produktentwicklung (z. B. Infrastruktur, Kundenfeedback) – diese werden als Squads bezeichnet .
  2. Horizontale kompetenzbasierte Gruppierungen (z. B. PHP-Entwickler, Front-End-Entwickler) quer durch die Squads – diese werden als Chapters bezeichnet . Jeder hat einen Chapter Lead, der (normalerweise) die Linienverantwortung für jeden in seinem Chapter übernimmt.
  3. Spezielle Interessengruppen (z. B. Agiles Projektmanagement, Testen) sind sowohl Chapter als auch Squads übergreifend – diese Gruppen sind als Gilden bekannt und jede hat einen Gildenleiter.

Es gibt einige Ähnlichkeiten mit einem Matrix-Management-System , die Sie vielleicht auch untersuchen möchten.

Haftungsausschluss : Ich habe das Squad-System nicht verwendet, ich denke nur, dass es ein guter Ansatz für Sie sein könnte!

Danke für den Link. Das ist sehr interessant. Ich beabsichtige, es weiter zu untersuchen.

TL;DR

TANSTAAFL. Wenn Sie skalieren möchten, müssen Sie weitere Teams hinzufügen. Wenn Sie jedoch weitere Teams hinzufügen, müssen Sie die zusätzliche Komplexität und den damit verbundenen Kommunikationsaufwand bewältigen.

Direkte Kommunikationskanäle skalieren schlecht. Die Formel wird allgemein als N(N-1)/2 ausgedrückt . Wenn Sie kein Projektmanagementmodell haben, das diese kritische Tatsache der Kommunikationskomplexität berücksichtigt, werden Sie große Probleme bei der Skalierung haben.

Teaming-Optionen

Scrum-Teams sind Projektteams . Während gute Teams oft zusammenbleiben, um an nachfolgenden Projekten zu arbeiten, um den Aufwand für die Bildung und Normierung mit einer neuen Gruppe zu vermeiden, ist dies keine Rahmenanforderung. Wenn Sie jedoch mehrere gleichzeitige Projekte haben, haben Sie unabhängig von Ihrer gewählten Methodik ein Kapazitätsproblem .

Aufgabenwechsel

Task Switching ist immer ein Problem. Selbst wenn Sie sich für eine andere Methodik als Scrum entscheiden, müssen Sie die Arbeit dennoch so paketieren und priorisieren, dass jede Arbeitseinheit das kognitive Umschalten minimiert. Das bedeutet, dass es weniger optimal ist, einen einzelnen Entwickler zu bitten, an verschiedenen Aufgaben für verschiedene Projekte zu arbeiten (selbst wenn die Aufgaben sequenziert und nicht pseudoparallel sind), als dem Entwickler zu erlauben, jeweils an einem Kundenprojekt zu arbeiten.

Akzeptieren Sie Arbeit basierend auf der Kapazität

Das eigentlich zugrunde liegende Problem ist, dass Sie Kundenprojekte priorisieren und Ihre Prozesse skalieren müssen, wenn Sie mehr Kapazität für mehr Kundenprojekte benötigen. Ihre Organisation sollte nicht mehr Arbeit annehmen, als verfügbare Kapazitäten haben. Die Priorisierung des Projektportfolios wird die Aufgabe der Geschäftsleitung sein, nicht die Aufgabe der Projektteams, daher betrifft Sie dieses Problem nicht direkt.

Was die Skalierung betrifft, ist ein Scrum of Scrums im Allgemeinen das richtige Werkzeug für den Job, wenn Sie ein Scrum-Shop sind. Wenn Sie eine andere Methodik verwenden, müssen Sie stattdessen die Skalierungsfunktionen dieses Frameworks verwenden. Der Punkt ist jedoch, dass die Kommunikation zwischen Teams schwieriger und komplexer wird, wenn Sie Teams hinzufügen. das ist fast axiomatisch.

Der beste Weg, den ich kenne, um das Problem des Wissensaustauschs in einer komplexen Scrum-of-Scrums-Umgebung zu lösen, besteht darin, sicherzustellen, dass die Product Owner teamübergreifende Schulungs- und Schulungsgeschichten zu ihrem Product Backlog hinzufügen. Dies bietet Möglichkeiten zur gegenseitigen Befruchtung zwischen Teams und reduziert den Siloeffekt, ohne die Natur der eng verbundenen Teams selbst zu zerstören.

Die Kapazität ist derzeit kein Problem, und wir können skalieren, um mehr Projekte zu unterstützen. Das Hauptproblem (glaube ich) ist, dass wir nicht genug Führung haben, um die höhere Kapazität zu bewältigen. Sollten wir einen Vollzeit-Manager „Entwicklungsleiter“ für alle Linienmanagement-/HR-Aufgaben haben, damit sich die Teamleiter auf das/die Projekt(e) konzentrieren können?
@flem - Teamleiter sollten vor Papierkram bewahrt werden, aber nicht vor der Verwaltung ihrer Teams.
@DeerHunter Ist es eine gute Idee, dass ein Teamleiter Linienmanager ist? Dh ist Scrum Master ein Linienmanager?
Wir versuchen im Allgemeinen zu vermeiden, dass Leute jemandem in ihrem Team, in dem ich bin, Bericht erstatten. Behält eine Unterscheidung zwischen Linienmanagement und Führung bei und hilft, Rückblicke ehrlicher zu halten, denke ich.
@flem - sieht so aus, als wäre es (Linienmanagement für Teamleiter) Gegenstand einer weiteren Frage.
@DeerHunter. Spin-off-Frage hier aufgeworfen .

Sehen Sie sich an, wie Menlo Innovations in Ann Arbor, Michigan, funktioniert. Ich denke, sie ähneln dem, was Sie zu tun versuchen.

  • Ungefähr 70 Mitarbeiter, die für viele Kunden maßgeschneiderte Arbeit leisten
  • Jeder paart sich, und die Paare wechseln wöchentlich - viel Wissensaustausch
  • Einwöchige Sprints
  • eXtreme Programming-Praktiken
  • High-Tech-Anthropologie (etwas, das sie erfunden haben)
  • Projekte werden aus Paaren gebildet, sodass sie nach Bedarf einfach vergrößert und verkleinert werden können

Siehe das kürzlich erschienene Buch Joy, Inc. Es wurde von Richard Sheridan, einem Mitbegründer von Menlo Innovations, geschrieben und beschreibt den Menlo Way. Sie machen auch Führungen durch ihren Laden und bieten Kurse für diejenigen an, die daran interessiert sind, die Techniken zu lernen. http://www.menloinnovations.com/

Ich habe noch nie dort gearbeitet, aber ich kenne eine Reihe von Leuten, die mit dem Unternehmen in Verbindung stehen, und ich bin ein Fan ihrer Arbeitsweise.