Um alle Vorteile einer agilen Softwareentwicklung zu nutzen, müssen erfolgreiche Softwareentwicklungsmanager teilweise Übersetzer, teilweise Motivator und teilweise Aufgabenmaster sein. [...]
Vor kurzem habe ich an einem #IDGTECHTalk teilgenommen, einem Twitter-Chat, der donnerstags um 12 Uhr ET stattfand und sich mit dem Thema „The Current and Future State of Coding“ auseinandersetzte. Viele der Fragen und Tweets bezogen sich auf die Programmierung von Sprachen und Frameworks; ich entschied mich, mich auf die Rolle des Softwareentwicklungsmanagements zu konzentrieren, bei dem es darum geht, sicherzustellen, dass Teams Ziele erreichen, Best Practices befolgen und bei Lösungen zusammenarbeiten.
Viele Unternehmen ermöglichen es selbstorganisierenden Teams, jeden Sprint durchzuführen und zuverlässige Anwendungs-Releases zu liefern. Sie erwarten einen Code, der qualitativ hochwertig, fehlerarm, sicher und wartbar ist, der auch die Geschäftsziele erfüllt und den technischen Aufwand reduziert. Große Unternehmen, die über mehrere agile Teams verfügen und danach streben, die Standards mit selbstorganisierenden Prinzipien in Einklang zu bringen, müssen die Rollen und Verantwortlichkeiten des Managements und der Mitglieder des Haupt-Teams berücksichtigen.
Hier muss die Rolle des Softwareentwicklungsmanagers definiert werden. Agile Development hat spezifische Richtlinien für die Rolle von Scrum-Mastern, Produktbesitzern und Teams, aber die meisten Praktiken und Frameworks sagen nur wenig über den Software Development Manager aus. Ich betrachte den Job als eine Mischung aus der Unterstützung von Teammitgliedern bei der Erfüllung ihrer Aufgaben, der Balance zwischen standardisierten Prozessen und agilen Prinzipien und der Bereitstellung erstklassiger Technologien auf der Grundlage von Frameworks und Best Practices.
Hier sind fünf spezifische Verantwortlichkeiten des agilen Softwareentwicklungsmanagers.
1. Mit den Produktbesitzern die Kompromisse bei der Umsetzung besprechen
Features und User Stories sollten das Was, Warum und Für wen festlegen, damit die Teams ein gemeinsames Verständnis für die Anforderungen und Akzeptanzkriterien entwickeln können. Im Idealfall sollten sie nicht übermäßig vorschreiben, wie das Feature oder die Story implementiert werden soll, obwohl viele Produkteigentümer sich dafür entscheiden, User Stories mit Implementierungsdetails zu entwickeln.
Wenn das Feature oder die Story übermäßig präskriptiv ist, dann werden die Entwicklungsteams in spezifische Implementierungen eingebunden, die teuer in der Umsetzung oder schwer skalierbar sein könnten. Wenn es zu wenige Details gibt, kennen die Entwicklungsteams möglicherweise die besten Implementierungsoptionen nicht, die den Bedürfnissen der Endbenutzer und den Geschäftsanforderungen entsprechen.
Wenn die Anforderungen zu streng sind, sollten Softwareentwicklungsmanager mehrere Implementierungsoptionen mit den Produktbesitzern ermitteln und dann erklären. Jede Option hat voraussichtlich Vor- und Nachteile, und die Diskussion führt oft zu besseren Lösungen.
Darüber hinaus sollte der Softwareentwicklungsmanager bei schlecht definierten User Stories verhindern, dass Teams sich an sie binden und sich dann mit dem Produktverantwortlichen über den erforderlichen Detaillierungsgrad beraten.
2. Übersetzen von Best Practices und Standards für Teammitglieder
Die Definition und der Austausch von Best Practices und Standards ist eine schwierige Aufgabe für Entwickler, aber Teams dazu zu bringen, sie zu verstehen und angemessen zu nutzen, kann für große Softwareunternehmen entmutigend sein.
Teams können Experten haben, die die Dinge anders machen wollen, als die Standards es empfehlen. Teams könnten auch weniger erfahrene Entwickler haben, die eine Best Practice möglicherweise nicht vollständig verstehen oder sie in ihren Codierungsaufgaben anwenden.
Der Softwareentwicklungsmanager muss die Fähigkeiten und Einstellungen jeder Person im Team verstehen. Er sollte die Umsetzung aus Stadionsicht überprüfen und feststellen, welche Best Practices und Standards anwendbar sein könnten. Anschließend kann er sie an das Team weiterleiten und Fragen oder Herausforderungen mit den Fachleuten besprechen.
3. Angehen von Backlogs, die sich nicht mit Innovation und technischer Verschuldung befassen
Product Owner arbeiten mit vielen Stakeholdern und Kunden zusammen, um Produktvisionen, Roadmaps und Feature-Prioritäten festzulegen. Sie stehen unter erheblichem Druck, mehr Funktionen zu entwickeln und mehr Interessenvertreter mit der Wahl ihrer Prioritäten zufrieden zu stellen.
Der Druck führt oft zu einem unausgewogenen agilen Rückstau, der mit Funktionen überlastet ist und nicht über ausreichende Kapazitäten verfügt, um zu experimentieren, zu innovieren und vor allem technische Schulden anzugehen.
Das Ungleichgewicht wird oft bei bestimmten Sprints und Releases benötigt, wenn geschäftskritische Funktionen in kurzen Zeitfenstern bereitgestellt werden müssen. Irgendwann müssen die Teams jedoch zu einem Gleichgewicht zurückkehren, bei dem Merkmale, Innovation und technische Verschuldungsprioritäten im Verhältnis zueinander stehen.
Die Entwicklung von Dashboards auf dem agilen Backlog ist eine Möglichkeit, die Prioritäten transparenter zu machen. Einige Teams führen zusätzliche Governance und Prozesse zum Management von technischen Schulden ein. Es gibt jedoch keinen Ersatz dafür, einen Vorgesetzten an vorderster Front zu haben, der diese Governance aktiv vorantreibt.
Der Softwareentwicklungsmanager ist diese Person. Er kann spüren, wenn Teams frustriert sind und zusätzliche Zeit benötigen, um sich mit technischen Schulden zu befassen. Er weiß auch, wann Teams Schwierigkeiten haben, komplexere Lösungen zu implementieren und Zeit für Experimente und Innovationen benötigen.
4. Bereitstellung hochwertiger Releases nach einem definierten Zeitplan
Die wohl wichtigste Aufgabe des agilen Softwareentwicklungsmanagers ist es, sicherzustellen, dass qualitativ hochwertige Veröffentlichungen termingerecht geliefert werden. Teams und Gruppen, die eine schlechte Ausführung haben oder als unzuverlässig, inkonsistent oder unverantwortlich in Bezug auf Qualität und Zeitpläne gelten, gefährden ihr Unternehmen und ihre Arbeitsplätze.
Wenn es Symptome dieser Probleme gibt, ist es die Aufgabe des agilen Softwareentwicklungsmanagers, die Ursachen zu identifizieren und sie zu beheben. Als ich mit einer Vielzahl von Softwareentwicklungsmanagern sprach, gehören zu den häufigsten Reaktionen auf diese Probleme:
- Dem Produkteigentümer die Schuld dafür geben, dass er den Backlog mit zu vielen komplexen Prioritäten überlastet hat.
- Identifizierung anderer Teams oder externer Abhängigkeiten, die den Fortschritt blockieren oder verlangsamen.
- Den Mangel an Training, Fähigkeiten oder Wissen im Team aufzeigen.
- Auf technische Verschuldung, das Fehlen von Standards oder die Notwendigkeit neuer Architekturen hinweisen.
- Spezifizierung zusätzlicher Investitionen in Tests, CI/CD (Continuous Integration/ Continuous Delivery) Automatisierung und andere Implementierungen, die die Qualität verbessern oder den Overhead reduzieren.
Die Chancen stehen gut, alle diese Punkte gelten bis zu einem gewissen Grad, aber das sind nicht die Antworten, die die Führung hören will, wenn das Team unterdurchschnittlich abschneidet.
Softwareentwicklungsmanager müssen überlegen, welche Maßnahmen sie ergreifen werden – und in größerem Umfang, was in ihrer Kontrolle liegt -, um das Team wieder auf Kurs zu bringen. Einige dieser Optionen können Folgendes beinhalten:
- Diskussion der Themen in Retrospektiven, damit die Teams die Probleme erkennen und die Partner sie angehen können.
- Überprüfung und Erfassung weiterer Daten über Fehler, die in die Produktion gelangen, sowie Identifizierung von Anforderungen und Prüflücken.
- Überprüfung der Kriterien für die Annahme von Storys, um sicherzustellen, dass die Teams die Qualitätserwartungen vollständig verstehen.
- Planung und Kommunikation früher in den Release- und Sprintzyklen, wenn die Arbeit den Einsatz von externen Teams erfordert.
- Sich zu einer langsameren Geschwindigkeit und einem kleineren Umfang verpflichten, bis die Teams wieder auf Kurs kommen.
5. Förderung von vielschichtigem Denken und Problemlösung
Erfolgreiche agile Teams lernen, wie man kooperiert und als Team zusammenarbeitet. Rituale wie Standups, Demos und Retrospektiven helfen, Teams zusammenzubringen, um Anforderungen zu verstehen, Lösungen zu schätzen, Blöcke auszuarbeiten und ihren Prozess zu verbessern. Diese Rituale bilden die Grundlage für die Zusammenarbeit. Softwareentwicklungsmanager müssen entscheiden, wie sie von allen Beteiligten Ideen und aktive Beiträge einholen können.
Die Teammitglieder haben unterschiedliche Persönlichkeiten und Kompetenzen. Einige mögen introvertiert sein und es schwer haben, zum Gespräch beizutragen, andere können Persönlichkeiten vom Typ A sein, die den Raum dominieren. Ebenso können erfahrenere Entwickler Problemlösungssitzungen steuern oder fortgeschrittenere Arbeiten übernehmen, indem sie die jüngeren Entwickler davon abhalten, ihre Ideen zu teilen oder Aufgaben zu übernehmen, die ihnen helfen zu wachsen.
Scrum-Master sollten bei Meetings eine aktive Rolle übernehmen, um sicherzustellen, dass jeder seinen Beitrag leistet und es ein vielfältiges Denken gibt. Softwareentwicklungsmanager müssen diesen einen Schritt weiter gehen und sicherstellen, dass sich das Team wie ein Team verhält, die Meinungen aller respektiert, Ideen teilt und es jedem ermöglicht, teilzunehmen und zu lernen.
Ist das nicht das, worum es beim Management geht?
*Isaac Sacolick ist der Autor von Driving Digital: The Leader’s Guide to Business Transformation through Technology, das viele Praktiken wie Agile, Devops und Data Science abdeckt, die für erfolgreiche digitale Transformationsprogramme entscheidend sind. Sacolick ist ein anerkannter Top Social CIO, ein langjähriger Blogger bei Social, Agile and Transformation und CIO.com sowie Präsident von StarCIO.
Be the first to comment