So strukturieren Sie ein Entwicklungsteam

22

Ich bin der Manager eines Teams von 11 Softwareentwicklern, die sich um die Websites / Webanwendungen meines Unternehmens kümmern und bis zu 4 Projekte gleichzeitig ausführen sowie den täglichen Support. Innerhalb der 11 Entwickler gibt es eine Mischung aus technischen Fähigkeiten, Berufsbezeichnungen und Erfahrung, obwohl die Teamstruktur flach ist und alle 11 Entwickler direkt an mich berichten.

Das gesamte Team, das nur einen Manager hat, zeigt, dass es nicht sehr gut skaliert. Ich fange an, zu dünn zu sein, also möchte ich meine Anzahl direkter Meldungen reduzieren. Alle Möglichkeiten, die ich mir vorstellen kann, dies zu tun, haben erhebliche Nachteile:

  • Lassen Sie Junior-Entwickler an Senior-Entwickler berichten. Dies reduziert die Entwicklungszeit der besten Techniker.
  • Teilen Sie das Team nach Softwareprodukten auf, z. B. arbeiten die Entwickler 1-6 im Intranet und 7-11 auf externen Websites, wobei jeder Abschnitt einen neuen Teamleiter hat (möglicherweise eine neue Stellenbeschreibung mit mehr Verantwortung für Management / Mentoring / Coaching als die aktuellen Senior-Entwickler) ). Dies fügt künstliche Silos hinzu und könnte es schwierig machen, einen "Intranet-Entwickler" dazu zu bringen, an einer externen Website zu arbeiten, wenn ich dies möchte.
  • Halten Sie die Struktur flach und unterstützen Sie Manager in Form von Projektmanagern / Teamadministratoren, um den Druck zu verringern. Dies löst das Problem nicht, da das Team nicht für immer so wachsen kann.

Gibt es einen Standardweg zur Lösung dieses Problems, den ich vermisse?

Wenn nicht, wie haben andere von Ihnen dieses Problem gelöst?

Nick
quelle
2
Wie interagieren Sie jetzt mit Ihren Berichten? Ist es technisch, administrativ oder eine Mischung? Wenn eine Mischung, wie viel Prozent Ihrer Zeit wird für jede ausgegeben?
Telastyn
Eine 50/50 Mischung aus administrativen und technischen.
Nick
Ist das spezifisch für die Programmierung? Ich frage mich, ob diese Frage auf Workplace.se
Daenyth

Antworten:

16

Einige kurze Gedanken:

  • Subteams sind eine gute Idee: 11 direkte Berichte ohne Struktur sind zu groß für ein funktionierendes Team (Sie haben nicht genug Zeit für direktes Coaching, und Teambesprechungen mit so vielen Leuten sind in der Regel unproduktiv).
  • Überlegen Sie, ob Sie die Abläufe von der Entwicklung trennen sollten - es handelt sich um ein geringfügig anderes Know-how, und wenn Sie den ganzen Tag über von betrieblichen Problemen unterbrochen werden, kann dies die Produktivität der Entwicklung bei Projekten erheblich beeinträchtigen.
  • Aufgrund der ersten beiden Punkte sollten Sie vielleicht drei Unterteams haben - Intranet, Externe Sites und Operations. Die Betriebsmitarbeiter werden sich um alle alltäglichen Probleme / Wartungsarbeiten usw. kümmern, während sich die beiden Entwicklungsteams darauf konzentrieren, neue Projekte / Werte für das Unternehmen bereitzustellen.
  • Wechseln Sie regelmäßig zwischen den Teams. Dies kann entweder gelegentlich (z. B. durch Überprüfung des Codes in einem anderen Unterteam), für ein Projekt oder auf Dauer geschehen. Stellen Sie jedoch sicher, dass sich die Teamrollen ändern, wenn ein Geschäftsbedarf besteht - niemand "besitzt" für immer eine bestimmte Rolle.
  • Fügen Sie keine weiteren Manager / Administratoren hinzu - dies ist eine todsichere Möglichkeit, die allgemeine Effektivität / Produktivität Ihrer Teams zu verringern. Lassen Sie die erfahrenste Person in jedem Unterteam eine Teamleiter- / Trainerrolle spielen. Stellen Sie sicher, dass sie ihre Rolle als Coach sehen und das gesamte Team zum Erfolg führen, und stellen Sie sicher, dass sie in der Lage sind, sich auf diese Weise zu verhalten, anstatt als "Task-Manager" zu agieren.
  • Ihre Rolle sollte sich auf das externe Stakeholder-Management, die Priorisierung von Ressourcen / Aufgaben innerhalb der Gruppe und das Handeln als "Cheftrainer" konzentrieren. Sie müssen das gelegentlich eskalierte Problem der Subteams behandeln, aber im Allgemeinen sollten Sie sie dazu ermutigen, Probleme selbst zu lösen, ohne zu Ihnen zu kommen.
  • Wenn Sie selbst sehr technisch sind, können Sie auch eine Rolle als Architekt / Konstrukteur übernehmen. Wenn nicht, finde jemanden, der das kann, im Team oder anderswo .....

Außerdem lohnt es sich immer, das Agile Manifest und insbesondere die zwölf Prinzipien (erneut) zu lesen .

mikera
quelle
7
Jedes Mal, wenn ich irgendwo gearbeitet habe, wo die Produktionsunterstützung von der Entwicklung getrennt wurde, war es eine große Katastrophe. Wenn die Leute nicht unterstützen, was sie entwickeln, erfahren sie nie, wo sie falsch liegen, und die Support-Entwickler befinden sich schließlich in einem Ghetto, aus dem es kein Entrinnen gibt.
HLGEM
3
@HLGEM - auf jeden Fall, aber deshalb muss man die Leute herumfahren lassen ... die Leute müssen auf jeden Fall Live-Support für ihre eigenen Produkte leisten, aber nicht zur gleichen Zeit, in der sie Version 3.0 entwickeln. Wahrscheinlich haben Sie auch ein oder zwei Mitarbeiter, die keine Entwickler sind und unterschiedliche Aufgaben zu erledigen haben. Daher kann es sinnvoll sein, eine andere Teamstruktur / ein anderes Arbeitsmodell für die Mitarbeiter zu haben. YMMV natürlich.
Mikera
9
Meiner Erfahrung nach versprechen sie immer, mit dem Fahrrad herumzufahren, aber sie tun es nicht, YMMV. Dies liegt zum Teil daran, dass diejenigen, die ursprünglich der Entwicklung zugewiesen waren, nicht zur Unterstützung übergehen möchten.
HLGEM
4

Diese Struktur wird hauptsächlich depend on project specifications

Idealerweise sollten 3 Junioren pro Senior-Entwickler in einem Team sein. Folglich gibt es pro Teach-Lead 2-3 leitende Entwickler.

Aus diesem Grund melden nur Techniker dem PM den Fortschrittsstatus des Projekts. Die beschriebene Struktur geht weiterhin davon aus, dass bei nicht-technischen Problemen (Urlaub, Freizeit, Konflikte usw.) jeder Zugriff auf PM haben kann.

Eines der relativ erfolgreichen Softwareentwicklungsteams, bei denen ich mitgewirkt habe, ging auf Projektbasis folgendermaßen vor:

Ein Software Development Manager / Senior Developer / Mentor, dem alle anderen direkt unterstanden.

  • Ein Projektmanager, der Termine einhielt, Anforderungen und Akzeptanzverhandlungen erleichterte und die Kommunikation übernahm. Jeder, der an einer gepunkteten Linie teilnahm, meldete sich auch bei dieser Person. Eine Dokumentationsperson (die gelegentlich auch die PM war, aber nur, wenn Fachwissen zulässig ist).
  • Eine Mischung aus 1-3 Entwicklern oder leitenden Entwicklern, je nach den Anforderungen des Projekts.
  • Ein Junior-Entwickler, wenn verfügbar.
  • Jemand aus einem QA-Pool zugewiesen.
  • Eine Person der Infrastruktur (eine Rolle, die der Manager häufig innehat, da er auch über eine solide SA-Kompetenz verfügte).

Es hat einwandfrei funktioniert und ich habe diese Organisation geliebt. Andererseits war ich der Software Development Manager und die Organisationsstruktur des Teams entwickelte sich weiter.

EL Yusubov
quelle
2

Ziehen Sie in Betracht, dem Muster der funktionalen Personalorganisation zu folgen . Dies spricht für Ihre zweite Option, das Team nach Softwareprodukten aufzuteilen.

So zitieren Sie den Artikel in Ihrem Kontext:

Die größte Stärke einer funktionierenden Organisation besteht darin, dass sie soziale Strukturen mit der Erbringung von Geschäftswert verknüpft. Meiner Ansicht nach sind Softwareprojekte so erfolgreich, wie sie die Effektivität der von ihnen unterstützten Aktivitäten verbessern - und einen Geschäftswert erbringen. Indem Sie Ihre Teams auf die gleiche Weise organisieren, haben Sie ein Team, das darauf ausgerichtet ist, die Geschäftsbenutzer zufriedenzustellen.

Die tatsächliche Management- / HR-Struktur spielt darüber hinaus keine Rolle.

Konr Ness
quelle
0

Gibt es einen Standardweg zur Lösung dieses Problems, den ich vermisse?

Nicht wirklich. Es wird von Ihrem Team abhängen, von Ihnen, was Sie tun müssen und welche Ressourcen Ihnen das Unternehmen zur Verfügung stellen wird.

Persönlich besteht die beste Art des Wechsels darin, die technische Verwaltung von der administrativen Verwaltung zu trennen. Es ist selten, dass Menschen in beiden Dingen gut sind und selten dazu neigen, miteinander zu interagieren.

Eine Person kümmert sich um die technischen Aspekte. Was muss getan werden, wer wird es tun, wie müssen sich die Dinge ausrichten. Der andere behandelt administrative Aspekte. Überprüfungen, Budgetbesprechungen, Produktplanung usw. arbeiten dann zusammen, um Erkenntnisse von einer Seite zur anderen zu kommunizieren und eine einheitliche Front zu schaffen.

Wie dies aufgebrochen wird, kann verschiedene Wege gehen. Am gebräuchlichsten ist, dass der technische Leiter die administrative Seite und der Architekt die technische Seite ist. Sie sind Peers und berichten an einen Director / VP.

Eine andere Aufgabe, die ich gesehen habe, besteht darin, dass der technische Leiter die Verwaltungsperson ist und dann der oder die Teamleiter als technische Person fungieren. Dies ist kniffliger und erfordert, dass die richtigen Personen als (meistens) Peers agieren, auch wenn die Berichterstellung hierarchisch ist.

Für Ihr spezifisches Szenario würde ich empfehlen, 2-3 Teams zu haben und technische Leads für die technischen Aspekte zu haben, und Sie konzentrieren sich auf die Verwaltung. Ja, es spart den Leads, die tatsächlich Code schreiben, Zeit, aber sie sollten (wenn sie gute Arbeit leisten) diese Zeit einkassieren, indem sie die jüngeren Entwickler effizienter / produktiver machen. Es gibt ihnen mehr Motivation und ein Gefühl der Leistung bei der eigentlichen Beförderung. Praktischerweise ist es einfacher, eine Position an das Management zu verkaufen, als eine neue zu eröffnen.

Telastyn
quelle