Zusatzkosten in der Software-Entwicklung aufgrund falschen Einschätzungen von Software-Entwicklern

Zusatzkosten in der Software-Entwicklung aufgrund falschen Einschätzungen von Software-Entwicklern

  • Andrej Albrecht
  • 2016-08-03 13:30:00

Kellerkind, unfähig sich auszudrücken, nur wenige Freunde oder nur Programmierer- und Zocker-Freunde. So in etwa stellen sich einige einen typischen Programmierer vor. Ist das wirklich so und warum kommt es zu diesem Klieschee?

Wie in jedem anderen Berufszweig und Lebensbereich gibt es introvertierte und extrovertierte Menschen. Mal mehr und mal weniger. Bei der Software-Entwicklung verbringt ein Programmierer nun mal viel Zeit am “Rechner”. Das muss aber auf keinen Fall bedeuten das sich ein Entwickler diesen Beruf ausgesucht hat, um anderen Menschen aus dem Weg zu gehen. Ich persönlich mag es herausfordernde Aufgaben am Rechner zu bewältigen. Es ist jedes mal ein Erfolgserlebnis, wenn man eine besonders schwierige Aufgabe gelöst hat. Es sollte jedoch nicht immer nur am Rechner sein. Sehr spannend ist die Zeit vom ersten Kundengespräch mit der ersten groben Idee einer Anwendung bis über weitere gemeinsame Absprachen hin zum “Launch” einer Anwendung und damit die Veröffentlichung des erarbeiteten Ergebnisses. Es ist immer wieder ein tolles Gefühl, wenn man am Ende zurückblickt und den gesamten Weg von einem ersten fetzen Papier zu einem tollen fertigen Produkt, sieht. Genauso gerne mag ich es besonders große Aufgaben im Team zu diskutieren, Aufgaben aufzuteilen und gemeinsam Lösungen zu erarbeiten und voranzukommen. Im Team wird es nie eintönig.

Ich habe in meinen bisherigen Erfahrungen so gut wie keine Software-Entwickler kennengelernt die auf das erwähnte “Kellerkind” zutreffen. Sehr wenige Ausnahmen bestätigen auch hier die Regel. Die meisten Software-Entwickler sind gerne beschäftigt mit dem Lösen von schwierigen Aufgaben, egal ob bei kleinen Aufgaben, alleine oder großen Aufgaben im Team. Es macht jedem Spaß und es wird gerne, viel und meistens zielgerichtet geredet.

Jedoch wird den Entwicklern nicht immer Kundenkontakt zugetraut. Was meist unbegründet ist. Ich vermute das die Management-Ebene einiger Unternehmen aus dem erwähnten Klischee den Entwicklern keinen Kundenkontakt zutraut. Dies hat jedoch unnötige Zusatzkosten in der Entwicklung von Software zur Folge.

Je länger die Kommunikationskette zwischen dem Kunden und den Entwicklern ist, desto schwieriger wird es das gewünschte Produkt umzusetzen. Es ist das selbe Prinzip wie bei dem Spiel “Stille Post”. Selbstverständlich bekommt der Kunde in den meisten Fällen das gewünschte Produkt. Jedoch zu einem überteuerten Preis, da es immer wieder zu Missverständnissen und damit zusätzlichen Absprachen und Korrekturphasen kommt. Das bedeutet nicht das ein Kunde im laufenden Projekt oder am Ende Zusatzkosten in Rechnung gestellt bekommt. Dieses Problem existiert so lange wie die Software-Entwicklung an sich. Diese Zusatzkosten werden bereits in der Planung von Software einkalkuliert. Selbstverständlich nicht mit Absicht!
Ein Entwickler oder Projektleiter wird gebeten eine Zeitplanung für bestimmte Funktionen durchzuführen, um auf dieser Grundlage die Kosten zu ermitteln. Aus Erfahrung weiß die Person wie lange es bei ähnlichen Funktionen der Fall war und das es evtl. zu Komplikationen gekommen ist. Schnell wird die alte Zeit mit einem geringen Puffer erhöht.

Ein Heilmittel gegen dieses Problem sind moderne Vorgehensmodelle wie z.B. Scrum. Bei Scrum werden den beteiligten Personen unterschiedliche Rollen zugewiesen. Der Kunde wird zum “Product-Owner”, dieser weiß im besten Fall was er am Ende als Anwendung haben möchte und gibt seine Vorstellung weiter. Die involvierten Entwickler sind das “Team”, welche die gewünschte Anwendung vom Product-Owner umsetzen. Zusätzlich wird eine Person aus dem Unternehmen zum “Scrum-Master”, der die Rahmenbedingungen vom Vorgehensmodell Scrum sicherstellen soll und Hindernisse die dem Team bei der Umsetzung ggf. im Weg stehen beheben soll. Scrum ist mit voller Absicht kein fixes Vorgehensmodell und kann oder sollte an unterschiedliche Gegebenheiten angepasst werden, um dem Team das Arbeiten zu erleichtern. An dieser Stelle möchte ich nicht zu Tief auf Scrum eingehen. Der Knackpunkt ist das die wichtigsten Parteien der Kunde als “Product-Owner” und die Entwickler als das “Team” sind. Dadurch wird sichergestellt das der Kunde direkt den richtigen Personen sagen kann was er haben möchte, die auch am Ende die Anwendung entwickeln. Dadurch kommt es zu weniger Missverständnissen und damit auch zu geringeren Kosten der Endanwendung.

Aufgepasst! Besonders schwierig ist der Fall, wenn der Kunde am Anfang des Projektes keine klare Vorstellung vom Endprodukt hat. Eine saubere Anforderungsanalyse sollte immer erstellt werden, bevor es in die Design und Konzeptionsphase geht. Ansonsten werden dem Kunden neue Ideen an das Endprodukt nie ausgehen. Es ist dann nicht immer einfach dem Kunden sagen zu müssen, dass dies am Anfang so nicht abgesprochen war und das Zusatzfunktionen auch mit zusätzlichen Kosten verbunden sind.

Wie können diese Probleme am besten vermieden werden?

  • Eine gründliche Anforderungsanalyse, sollte erstellt werden.
  • Kommunikationskette vermeiden. Falls weitere Personen in der Kommunikationskette involviert sind werden unweigerlich Informationen herausgefiltert, was jedoch später zu Missverständnissen führt.
  • Die Software-Entwickler sollten direkt mit dem Kunden über die Funktionen sprechen. Entwickler können und sollten “auf Kunden losgelassen werden”.
  • Der Kunde sollte seine Vorstellung über die Anwendung den Entwicklern direkt mitteilen.
  • Das Programmieren alleine nach Layout-Vorgaben (wie Screenshots) ist nicht ausreichend.