Drei Fragen zur Softwareentwicklung
Ein Gespräch mit Thomas Klingenberg über Softwareentwicklung
Thomas Klingenberg beschäftigt sich seit über 35 Jahren professionell mit der Entwicklung von Software und allem, was man zur Softwareentwicklung neben guten Entwicklern braucht: Methoden, Tools und Prozessen, sowie dem Management von Projekten und Organisationen.
In seiner Rolle als Softwareentwickler, Softwarearchitekt, Projektleiter sowie Firmengründer und Geschäftsführer von t2informatik ist er genau der richtige Ansprechpartner für die folgenden drei Fragen zur Softwareentwicklung:
Warum ist Softwareentwicklung so teuer?
Thomas Klingenberg: Das ist eine überraschende Einstiegsfrage. Wer glaubt denn, dass Softwareentwicklung teuer ist? Vielleicht wundert sich der eine oder andere Interessent, dass eine Mietlizenz 10 Euro pro Monat und Nutzer kostet, eine Kauflizenz 2.000 Euro und eine individuelle Softwareentwicklung eine Million Euro? In diesem Fall vergleicht man Äpfel mit Birnen, denn der Preis pro Lizenz für eine Software von der Stange – die offensichtlich nicht immer zu den Bedürfnissen vor Ort passt, sonst gäbe es keinen Bedarf an individueller Softwareentwicklung – sagt nichts über die Herstellungskosten des Anbieters aus.
Kosten sind aber in der Tat ein gutes Stichwort. Ich habe die Erfahrung gemacht, dass die wenigsten Unternehmensvertreter wirklich wissen, was sie brauchen. Oft ist zwar das gewünschte Endergebnis klar, aber im Detail gibt es viele Unklarheiten. Unklare Anforderungen gelten auch heute noch als wesentliche Kostentreiber bei der Entwicklung von Software. Benötigt man Feature X oder nicht? Wie soll das Feature konkret aussehen? Wer benutzt es eigentlich und was braucht diese Person? Was auf den ersten Blick klar und einfach erscheint, ist es bei näherer Betrachtung oft nicht.
Wir vereinbaren gerne Vorprojekte mit unseren Kunden. Ein Vorprojekt ist wie die spätere Softwareentwicklung etwas Individuelles und individuelles Arbeiten kostet Geld. Das Vorprojekt bietet aber die Möglichkeit, mit Sorgfalt ein gemeinsames Verständnis über die konkreten Wünsche und inhaltlichen Anforderungen, über sinnvolle Frameworks, vorhandene Fertigbausteine sowie die anschließende Umsetzung zu gewinnen. Natürlich ist das keine Garantie dafür, dass bei der Umsetzung immer alles reibungslos funktioniert, aber es ist mit Sicherheit ein Vorgehen, das beiden Partnern den größten Nutzen bringt.
Apropos Nutzen: Softwareentwicklung ist eine Investition und wie bei jeder Investition ist es sinnvoll, neben den Kosten auch den Nutzen zu betrachten. Bei einer Softwaremodernisierung, also der Überarbeitung einer bestehenden Lösung oder der Neuentwicklung einer eingesetzten Software, lässt sich der Nutzen oft aus der Vergangenheit ableiten. Bei der Entwicklung einer komplett neuen Software ist dies weniger einfach, dennoch haben viele Unternehmensvertreter ein gutes Gefühl, welchen Nutzen sie sich von einer Software versprechen. Gleichzeitig wissen sie aber auch, dass die Entwicklung von Billiglösungen tatsächlich teuer ist, denn hohe Wartungskosten während der Nutzungsdauer, mit denen die Fehler der Vergangenheit kompensiert werden, sind wahre Kostentreiber.
Welche Bedeutung haben Expertise und Kapazität in der Softwareentwicklung?
Thomas Klingenberg: Natürlich sind Expertise und Kapazitäten wichtig in der Softwareentwicklung.
Tom DeMarco hat in einem seiner Bücher, ich glaube es war „The Deadline“¹, eine interessante Geschichte zum Thema Expertise erzählt. Der Protagonist des Buches wird in ein fiktives Land irgendwo in Osteuropa entführt. Dort soll er mithilfe von 1.000 Softwareentwicklern aus einem Unternehmen den größten Softwareanbieter der Welt machen. Und wie macht er das? Er nimmt die 5 besten Softwarearchitekten und gibt den restlichen 995 Entwicklern Aufgaben, damit sie beschäftigt sind und die wirklichen Experten in Ruhe arbeiten können.
Natürlich ist diese Geschichte übertrieben, aber das skizzierte Vorgehen macht Sinn. Gerade zu Beginn einer Entwicklung ist es wichtig, die Weichen für ein erfolgreiches Projekt zu stellen. Ein erfahrener Entwickler weiß, wie er ein Vorhaben aufsetzt, die richtigen Techniken, Frameworks oder Muster auswählt und den Systemkontext bestimmt. Er wendet Prinzipien und Praktiken der Clean Code Entwicklung an, kennt Projekte, die funktioniert haben, und weiß, warum andere gescheitert sind. Kurz gesagt, er hat keine Angst vor einem weißen Editor und kann die Grundlagen für ein Projekt festlegen.
Interessanterweise lässt sich aus der Geschichte von Tom DeMarco auch ein Zusammenhang zwischen Expertise und Kapazität ableiten: Zu Beginn einer Entwicklung ist der Bedarf an Expertise hoch, der Bedarf an Kapazität zur Realisierung einer Anwendung aber noch gering. Im Laufe des Projekts verschiebt sich der Bedarf; je weiter das Projekt voranschreitet, desto geringer wird der Bedarf an Expertise und desto größer wird der Bedarf an Kapazität. Üblicherweise übernehmen erfahrene Mitarbeiter dann im Projektverlauf andere Aufgaben wie z. B. die Durchführung von Reviews oder die Definition von Pull Requests.
Welche Bedeutung hat Qualität in der Entwicklungspraxis?
Thomas Klingenberg: Qualität ist ein wichtiges Thema. Gefühlt erwartet jedes Unternehmen Qualität von seinen Lieferanten und Partnern, und wenn man den Aussagen des Marketings glauben darf, liefert jedes Unternehmen auch Qualität. In der Softwareentwicklung ist das vielleicht nicht ganz so einfach.
Leistung, Kosten und Zeit – diese drei Dimensionen definiert das im Projektmanagement häufig zitierte Magische Dreieck. Was ist zu tun, wie lange dauert es und was kostet es? Die Dimension Qualität fehlt. Oder sie ist irgendwo implizit enthalten. Bei der Entwicklung einer Software reicht das aber nicht aus: Hier sollte Qualität explizit thematisiert werden. Es macht einen großen Unterschied, ob ich einen Wegwerf-Prototyp entwickle, der die Machbarkeit eines Vorhaben nachweisen oder einen Projektsponsor überzeugen soll, oder ob ich eine Legacy-Anwendung modernisiere, die nun die nächsten 10 oder 15 Jahre genutzt wird.
Bei Qualität geht es also um das, was der Kunde wirklich braucht und was den Zweck erfüllt. Qualität ist Fit for Purpose. Beispielsweise muss der implementierte Code bei einem Wegwerf-Prototyp nicht unbedingt „sauber“ sein. Handelt es sich aber um eine Unternehmensanwendung, die kontinuierlich genutzt wird, dann sollte der Code natürlich leicht lesbar, änderbar, erweiterbar und wartbar sein. Hier kommen wieder die Werte, Prinzipien und Praktiken von Clean Code ins Spiel.
Es gibt noch einen weiteren Aspekt der Qualität in der Entwicklungspraxis. Die passende Frage dazu lautet: Wer spürt den Schmerz? Wenn ein Unternehmen Standardsoftware entwickelt, ist es oft der Supportmitarbeiter, der das Feedback von den Anwendern bekommt. Der Supportmitarbeiter wird aber in den allermeisten Fällen nicht derjenige sein, der den entsprechenden Code der Anwendung implementiert hat. Entwickelt dagegen ein Dienstleister im Auftrag eines Kunden, sorgen kurze Feedbackschleifen während des Vorhabens dafür, dass die beteiligten Entwickler den Schmerz spüren, wenn es Probleme gibt. Vielleicht liegt der Fehler in der Implementierung, vielleicht in der User Story, so oder so lernt die Organisation daraus und das steigert auch die Qualität in der Entwicklungspraxis.
Hinweise:
[1] Tom DeMarco: The Deadline: A Novel About Project Management
Haben Sie Bedarf an Softwareentwicklung? Dann melden Sie sich gerne bei Thomas Klingenberg.
Wenn Ihnen der Beitrag gefällt oder Sie darüber diskutieren wollen, teilen Sie ihn gerne in Ihrem Netzwerk. Und falls Sie sich für weitere Tipps aus der Praxis interessieren, dann testen Sie gerne unseren wöchentlichen Newsletter mit neuen Beiträgen, Downloads, Empfehlungen und aktuellem Wissen. Vielleicht wird er auch Ihr Lieblings-Newsletter!
Es gibt weitere Beiträge aus der t2informatik Blogserie „Drei Fragen …“:
Michael Schenkel
Leiter Marketing, t2informatik GmbH