Komplexität zu bewältigen, gehört zum Alltag von Softwareentwicklern.
Perfekte Software zu schreiben, kostet deutlich weniger, als Software von zweifelhafter Qualität zu entwickeln. Anfangs kann dies zwar mehr Zeit und Ressourcen kosten, doch Ihre Teams sparen ein Mehrfaches dieser Kosten, wenn sie den Code von Anfang an richtig schreiben.
Die Menschen, aus denen Ihre Softwareteams bestehen, sind das entscheidende Bindeglied Ihrer Projekte. Deshalb sind kontinuierliche Verbesserungen für Teams und kontinuierliches Lernen für die einzelnen Mitarbeiter die besten Investitionen, die Sie tätigen können. Wenn Ihren Teams fehlt, was sie für effizientes Arbeiten benötigen, wird Erfolg unwahrscheinlicher.
Das sind die größten Effizienzkiller für Ihre Softwareteams:
1: Keine Übereinstimmung von Produkt und Markt
Es spielt keine Rolle, wie effizient oder effektiv Ihre Softwareorganisation ist, wenn Produkt und Markt nicht zusammenpassen. Was Sie produzieren, ist nur so wertvoll, wie es der Markt bewertet.
2: Mangelhafte Qualität
Fehler im Code führen nicht nur zu schlechten Kundenerlebnissen, sondern auch zu Nacharbeit im Team. Dadurch steigen die Arbeitskosten, und das Team wird von weiteren Fortschritten beim Aufbau des Systems abgehalten.
Und das Fehlen verlässlicher automatisierter Tests macht Änderungen zur Vereinfachung des Codes teuer und riskant, wodurch das Team noch langsamer wird.
3: Änderungskosten
Wenn Sie nicht bewusst Schritte zur Verringerung der Komplexität unternehmen, nimmt diese mit jeder Erweiterung einer Codebasis ganz natürlich zu. Dadurch wird es immer zeitaufwendiger und folglich teurer, spätere Änderungen am Code vorzunehmen. Der Druck von Stakeholdern oder dem Management, schnell mit der nächsten Aufgabe weiterzumachen, führt dazu, dass Teams die erforderlichen Refactoring-Schritte überspringen, um die Änderungskosten niedrig zu halten.
Die Auswirkungen werden nicht immer sofort erkannt, und letztlich führen sie dazu, dass Änderungen am System unerschwinglich werden. Außerdem nehmen sie Teams die Kapazität, die sie benötigen, um die Probleme zu beheben, in die sie geraten sind. Für ein kleines Softwareunternehmen kann die Fähigkeit – oder deren Fehlen –, die außer Kontrolle geratenen Änderungskosten zu kontrollieren, über Leben und Tod entscheiden.
4: Schlechte Teamdynamik
Ein dysfunktionales Team kann nicht gut funktionieren – so einfach ist das. Menschen nach Eigenschaften einzustellen, die sie zu guten Teamkollegen machen, Teams Zeit zu geben, die „Forming-Storming-Norming-Performing“-Kurve zu durchlaufen, und gut funktionierende Teams langfristig zusammenzuhalten, führt zu leistungsfähigeren Organisationen.
5: Engpässe
Organisationen können den Fehler machen, eine oder mehrere Rollen unzureichend zu besetzen, wenn sie Entwicklungsprozesse definieren, bei denen der Code auf dem Weg in die Produktion von einer Rolle an die nächste übergeben wird.
Die Qualitätssicherung ist davon häufig betroffen. Manche Organisationen strukturieren ihre Teams so, dass mehrere Teams von den Ergebnissen anderer Teams abhängen. Diese können möglicherweise nicht alle benötigten Leistungen rechtzeitig für die nachgelagerten Teams bereitstellen. Die gesamte Organisation ist nur so schnell wie der langsamste Engpass entlang der Wertschöpfungskette.
6: Manuelle, sich wiederholende Arbeit
In der Softwareentwicklung gibt es keine standardisierte Arbeit. Wenn Ihr Team eine solche findet, muss sie schnellstmöglich automatisiert und damit abgeschafft werden. Sich wiederholende manuelle Arbeit ist fehleranfällig und teuer, und manuelle Prozesse skalieren nicht mit Ihrem System.
Bereitstellungen, System-Patches und andere manuelle Arbeiten können schnell Zeit verschlingen, die ein Team nicht übrig hat.
7: Unnötige Komplexität
Wenn das Bearbeiten, Erstellen, Testen und Bereitstellen von Software lange dauert, bremst das den Fortschritt. Langsame automatisierte Tests, die mit End-to-End-Testtools geschrieben wurden, verlängern die Zykluszeit eines Teams. Das gilt auch für manuelle Tests, langwierige Bereitstellungsprozesse und Code-Review-Prozesse, die in den Zyklus vom Bearbeiten bis zur Bereitstellung eingeschoben werden.
Heutzutage dreht sich alles darum, Komplexität zu reduzieren. Organisationen müssen sich jedoch daran erinnern, was die effiziente Softwareentwicklung schwächt oder sogar zerstört. Die Stärke, Gesundheit und Geschlossenheit Ihrer Teams entscheiden über Erfolg oder Misserfolg Ihrer Projekte. Menschen müssen nicht unbedingt zu 100 % für eine Rolle qualifiziert sein, um darin erfolgreich zu sein – viele dieser Anforderungen können im Laufe der Zeit vermittelt werden.
Wenn Sie bei der Einstellung auf Soft Skills – Kommunikation, Zusammenarbeit und Ähnliches – achten, hilft das beim Aufbau stärkerer Teams. Auch kontinuierliche Schulungen leisten dazu einen Beitrag. Behalten Sie die oben besprochenen sieben Effizienzkiller im Blick, während Sie ein effizienteres und effektiveres Softwareentwicklungsteam aufbauen.
Über die Autorin:
Susan Davis ist CTO von Certn

