Die Softwareentwicklung richtig managen

Drei „False Friends“ der Softwareentwicklung
Keine Kommentare

Die Softwareentwicklung ist eine ganz besondere Disziplin. Oft gelten hier nämlich Regeln, die Laien auf den ersten Blick als falsch ansehen würden. Da nun aber meist fachfremde Personen – Manager, Kunden, CEOs – über Entwicklungsprozesse mitentscheiden, ist es wichtig, diese kontraintuitiven Eigenheiten der Softwareentwicklung genaustens zu kennen.

Noch heute kommen in der Softwareentwicklung Praktiken zum Einsatz, die eine Organisation effizienter gestalten sollen, oft aber den gegenteiligen Effekt haben: Statt einem Projekt zum Erfolg zu verhelfen, sorgen die Verfahren dafür, dass sich die Abläufe verlangsamen. In der Konsequenz kommt es nicht nur zu höheren Fehlerraten, sondern auch die Belegschaft ist unzufrieden mit ihren Leistungen.

Das Problem dabei ist, dass der sogenannte “gesunde Menschenverstand” in vielen Dingen der Software-Entwicklung nicht weiterhilft, da die Entwicklung ein komplexes Unterfangen ist, das mit Problemen des Alltags nur wenig gemein hat. Das Vertrauen in Maxime, die im Alltag gelten, führt deshalb nicht selten in die Irre – und manchmal gar zum Scheitern des gesamten Projekts.

“False Friends” der Software-Entwicklung

In seinem Artikel „Software Development is Upside Down“ gibt Allan Kelly hilfreiche Tipps, wie solche Alltagsweisheiten als “False Friends”entlarvt werden können. Wie schauen uns drei dieser falschen Freunde etwas genauer an.

1. “Quick” ist langsamer

In der Softwareentwicklung gibt es kein „quick and dirty“. Die Entwicklung von qualitativ hochwertigen Codebausteinen ist immer besser als das schnelle Schreiben einiger Zeilen. Der Grund hierfür ist simpel: Schlechter Code muss überarbeitet werden – und das kostet Zeit. Die Vorstellung, mit minderwertigem Code schnelle Ergebnisse zu erzielen, ist nicht gänzlich falsch. Auf lange Sicht sind die zu behebenden Mängel und Fehler jedoch verantwortlich dafür, dass ein Projekt mehr und mehr ins Stocken gerät.

Der Preis nachlässig programmierter Programmzeilen ist hoch, da jede darauf folgende Entwicklung mehr Zeit kostet. Wer von Anfang an auf qualitative Lösungen setzt, wird auf Dauer schneller Arbeiten und bessere Ergebnisse präsentieren. Aber was versteht man unter „Qualität“? In der Softwareentwicklung gibt es eine Reihe von Faktoren, die ein qualitatives Produkt auszeichnen, wie etwa der Funktionsumfang, die Usability oder die Ausführungsgeschwindigkeit.

Lesen Sie auch: Agile Märchenstunde – Mythen und Gerüchte

Was die Qualität von Codebausteinen ausmacht, variiert von Produkt zu Produkt. Allerdings gibt es zwei Kernelemente, die nahezu alle qualitativen Softwareprodukte aufweisen: eine geringe Fehleranzahl und eine gute Wartungsfreundlichkeit. Wird über Qualität in der Softwareentwicklung gesprochen, müssen zumindest diese beiden Punkte erfüllt sein.

2. Entwickler-Genies sind keine guten Vorbilder

Noch immer haftet dem Ideal des einsamen Entwicklers, der sich monatelang einschließt und ein Projekt im Alleingang programmiert, eine gewisse Romantik an. Es gibt tatsächlich eine Vielzahl an erfolgreichen Softwareprodukten, die von Einzelnen entwickelt wurden. Trotz aller Bewunderung gibt eine solche Arbeitsweise aber kein gutes Vorbild ab.

Die Fähigkeiten, die einsame Entwickler erfolgreich machen, wirken sich nachteilig auf die Softwareentwicklung aus. Es geht nicht darum, Codebausteine möglichst schnell alleine auf die Beine zu stellen. Ein erfolgreiches Produkt ist auf Teams angewiesen, deren Mitglieder zusammenarbeiten, miteinander diskutieren und ihre Ideen untereinander teilen. Das Pair Programming ist effizienter als jede Einzelleistung; und auch der Trend des Mob Programming zeigt, dass heutzutage Teamleistungen gefragt sind.

Aber Teams sind nicht gleich Teams. An einem gewissen Punkt in der Softwareentwicklung nimmt die Produktivität durch die Erhöhung des Leistungsumfangs nicht mehr zu. Im Gegenteil: Ist der Punkt einmal überschritten, geht die Produktivität sogar zurück. Das ist der Grund, warum kleine Teams in der Regel effizienter arbeiten als große. Die individuelle Leistung von Entwicklern, die in kleinen Teams arbeiten, ist im Vergleich zu ihren Kollegen, die in großen Teams aktiv sind, deutlich höher.

DevOps Docker Camp

Sie lernen die Konzepte von Docker und bauen Schritt für Schritt eine eigene Infrastruktur für und mit Docker auf.

3. Gründlicher planen führt nicht zum Ziel

In den Anfangszeiten der Softwareentwicklung war die benötige Hardware noch teuer und schwer zu bekommen. Aufgrund der niedrigen Komplexität der damaligen Systeme war es sinnvoll, sämtliche Szenarien gedanklich durchzuspielen, bevor mit der eigentlichen Entwicklung begonnen wurde.

Die Voraussetzungen haben sich seitdem enorm gewandelt. Mittlerweile stehen ausreichend und kostengünstige Ressourcen zur Verfügung. Heutzutage wird nicht mehr lange geplant. Es wird einfach ausprobiert, ob eine Technologie funktioniert oder nicht. Auf diese Weise werden neue Ansätze erprobt und die Bedürfnisse der Nutzer ermittelt. Eine gute Planung ist dadurch aber nicht völlig überflüssig.

Lesen Sie auch: Agile Methoden – Planung ist alles

Wird allerdings zu viel geplant, wirkt sich das negativ auf den Erfolg des gesamten Projekts aus. Die moderne Softwareentwicklung ist iterativ: gelernt wird in der Praxis nicht in der Theorie. Die Effizienz eines Teams hängt deshalb nicht nur von der Größe ab. Wenn qualitativ hochwertige Produkte entwickelt werden sollen, ist ein iteratives Arbeiten Pflicht.

Und Sie?

Die Liste der Alltagsweisheiten, die in der Software-Entwicklung gerade nicht gelten, ist damit sicherlich nicht abgeschlossen. Welchen falschen Freunden sind Sie in ihrer Praxis als Software-Entwickler schon begegnet? Wir freuen uns auf Ihre Kommentare!

ML Conference 2019

Deep learning advances for signal processing

with Oleksandr Honchar (Mawi Solutions)

Towards meaningful AI

with Imola Fodor (Electrolux)

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -