Die 8 häufigsten Fehler in der Softwareentwicklung

Im Folgenden einige der grossen Herausforderungen bei der Softwareentwicklung.

1) Fehlende Planung des Projektes

Keiner will sich die Zeit nehmen zu planen. Sondern möchte am liebsten gleich mit der Programmierung starten.

Am besten sollte der Programmierer sich gleich hinsetzen und die erste Zeile Code schreiben. So, denkt man, vergeudet man weniger Zeit und ist gleich von Anfang an produktiv.

Die Problematik dabei ist jedoch ist, dass wenn man ungeplant zwar tatsächlich schneller produktiv wird. Man jedoch höchstwahrscheinlich wichtige Punkte übersieht, wie zum Beispiel die passende Technologie auszuwählen oder den Zweck der Software richtig zu definieren.

Lösung: Es gibt kaum eine Lösung zu diesem Fehler. Der Wille ist meistens bei keinem der Seiten (Programmierer, Auftraggeber, Dienstleister, etc.) gegeben sich mit einer ausgiebigen Planung auseinanderzusetzen.

2) Ungenaue Beschreibung der Anforderungen

Durch eine fehlende Planung fehlen auch die genauen Anforderungen an ein Projekt.

Damit wird es extremst schwierig für den Entwickler die richtigen Dinge umzusetzen.

Beispielsweise sind in vielen Projekten die Anforderungen nur schriftlich formuliert.

Dabei würde zum Beispiel eine Ergänzung durch Bilder (zum Beispiel Wireframes, ungefähre Zeichnungen der Funktionalität) viel weiterhelfen.

Auch werden die Anforderungen nicht richtig kommuniziert. Das liegt meistens daran, dass sehr viele Schichten von Projektleitern, Teamleads und Managern zwischen dem eigentlichen Projektformulierer stehen und dem der das Ganze programmiert.

Lösung: Besser wäre es eine direkte Kommunikation zwischen dem Projektformulierer und dem Programmierer zu ermöglichen. Dadurch vermeidet man böse Überraschungen. Es ist zwar lustig ein Ohrflüster Experiment zu machen, wo der eine dem anderen was in das Ohr sagt und es in der Reihe weitergeht und am Ende etwas ganz anderes herauskommt, bei der Softwareentwicklung mündet das am Ende jedoch in Diskussionen und Konflikten.

3) Unpassende Auswahl der Entwicklungsmethode

In vielen Softwareprojekten wird die sogenannte Wasserfall Methode der Softwareentwicklung verwendet.

Der Vorteil dabei ist, dass die Anforderungen zum Anfang allesamt erfasst werden und dadurch auch der Preis festgelegt werden kann, so dass es dann später keine Überraschungen gibt.

Die Realität sieht jedoch so aus, dass dem Projektauftraggeber während des Projektes feststellt, dass diese und jene Funktionalität falsch eingeplant wurde oder eine ganz andere Funktionalität besser wäre.

Dieses kann man jedoch nicht in der Wasserfall Methode einbringen, zumindest widerspricht es der Philosophie davon. Dies kann dann zu Konflikten führen, wenn der Auftraggeber auf die Umsetzung der Funktionalitäten setzt, die ausführende Firma oder der Programmierer jedoch auf die anfangs festgelegten Funktionalitäten besteht und nicht bereit ist Änderungen während des Projektes vorzunehmen. Sondern darauf besteht, diese zum Ende der Entwicklung, in einer nächsten Phase umsetzen zu lassen.

Besser ist also immer die sogenannte Agile Softwareentwicklung, in der man von Anfang an davon ausgeht, dass weitere Funktionalitäten dazu kommen werden und das es die menschliche Art ist, nicht alles von Anfang an zu berücksichtigen.

Die Problematik dabei ist dann jedoch auch, dass kein fester Preis bei Agile herauskommt, sondern eher alles sehr schwammig gegenüber dem Kunden wirkt. Deswegen wird es schwer diese Form der Programmierung anzusetzen.

Was viele Auftragnehmer deswegen machen, ist nur die Vorteile von Agile zu nennen und mit der Agilen Umsetzung zu starten. Sobald der Preis jedoch steigt, kann es zu Konflikten kommen. Aussagen wie “Das war doch schon bereits von Anfang an Teil der Anforderungen” sind fast jedem Programmierer bekannt.

4) Falsche Technologieauswahl

Besonders wenn es um die Technologie für die Entwicklung geht, werden oftmals Fehler gemacht.

Gerne werden neue spannende Technologien verwendet, beispiele heutzutage sind Golang oder Node.JS.

Die Problematik die sich daraus ergibt sind vielfältig:

  • a) Wenn sich der Hersteller der neuen Technologie für ein Update entscheidet, dann muss man unter Umständen den kompletten Code neue schreiben. Eine Sache die sehr umständlich und nicht wirklich praktikabel ist.
  • b) Ausserdem ist es schwer gute Entwickler für diese Technologien zu finden. Entweder sind sie 1) zu teuer, weil gute Entwickler in diesen Nischentechnologien gefragt sind, oder 2) sie sind relativ unerfahren, weil es die Technologie nicht wirklich lange gibt.
  • c) Sagen wir, es ist möglich einen guten Entwickler zu finden. Was ist wenn dieser das Unternehmen verlässt? Einen Ersatz zu finden ist eine Herausforderung, denn meistens war der Entwickler den man bereits hatte einer der wenigen die sich mit der Technologie richtig auskannten.

Die beste Lösung: Die beste Lösung ist es, hier auf “Tried and Tested” Technologien zu setzen.

Ein Beispiel wäre hier im Bereich Web die Kombination PHP, MySQL, JavaScript, HTML, CSS.

Diese Kombination an Fähigkeiten findet man fast überall und es lassen sich Experten zu machbaren Preisen/ Gehältern finden.

Zusatz: Sobald man jedoch zu dieser oben genannten Web Kombination bereits nur eine weitere „exotische“ Technologie, wie zum Beispiel Angular hinzufügt, dann verringert sich der Kandidatenkreis an möglichen Programmierern bereits ungemein, weil vielleicht nur 10 Prozent der Webentwickler aus diesem Bereich sich damit auskennen. Nimmt man dann noch zum Beispiel noch Node.JS dazu, dann sind es eventuell noch 5 Prozent, wenn nicht sogar weniger. Also am besten immer bei den Kerntechnologien bleiben, die es schon lange gibt und die es sicherlich noch lange geben wird.

5) Zu kompakter unverständlicher Code

Früher hat man berechtigter Weise versucht “effizienteren Code” zu schreiben, in dem man kürze Namen und komplexe Funktionalitäten schrieb, um den Code kürzer zu machen.

Aufgrund dessen wurde der Code mit der Zeit zwar schnell ausführbar, aber dafür immer unlesbarer.

Heutzutage ist das nicht mehr notwendig, es gibt fast schon unendlich viel Rechner-Power und man kann auch mehr Zeilen Code schreiben, ohne zu befürchten, dass das Programm langsamer wird.

Wenn man den Code sauber schreibt und auch beschreibt, dann wird sich auch ein anderer Entwickler in die Programmierung einarbeiten können.

6) Zeitlicher Aufwand wird falsch eingeschätzt

Es gibt kaum ein einziges Projekt bei dem der zeitliche Rahmen einer Softwareentwicklung eingehalten wird.

Es dauert immer mindestens zwei Mal bis ein vielfaches der Einschätzung zum Anfang des Projektes.

Das liegt an den neuen Anforderungen die während des Projektes vom Auftraggeber gestellt werden, aber auch daran, dass ein Entwickler gar nicht grössere Projekte genau einschätzen kann.

Wenn ein Entwickler ein Projekt auf 6 Monate Entwicklungszeit schätzt, dann sollten bereits die Alarmglocken läuten, denn niemand wird in der Lage sein, solche langen Projektzeiträume genau einschätzen zu können. Auch nicht der erfahrenste Programmierer.

Lösung: Besser ist es die Aufgaben in kleinere Module von wenigen Tagen herunterzubrechen. So wird es möglich eine genauere Schätzung zu geben.

7) Budget wird zu niedrig angesetzt

Aufgrund der fehlenden Planung, der fehleingschätzten Zeit und der zunehmenden Komplexität des Codes, wird auch das notwendige Budget für das Projekt ansteigen.

Genauso wie die Zeit, wird auch das Budget meistens doppelt so hoch oder ein vielfaches von dem was Anfangs geplant war.

Lösung: Immer einen Puffer an Budget einplanen. Definitiv nicht mit genauen Beträgen arbeiten.

Die Herausforderung auch hier – Um das Projekt zu gewinnen werden alle Seite (auch der Auftraggeber) die Zeit für die Entwicklung und damit auch das Budget niedrig ansetzen. Mit der Illusion das es dann günstiger wird.

8) Fehlende Dokumentation

Genauso wie die Planung, ist auch die Dokumentation der Software ein Bereich mit dem sich niemand gerne beschäftigt. Lieber 100 Zeilen mehr Code, was als produktiver betrachtet wird, anstatt “Zeit verschwenden” mit der Dokumentation des Codes.

Das ist ok, wenn man ein Programmierer daran für zwei drei Tage programmiert. Die Realität sieht jedoch so aus, dass sogar der Programmierer nach einigen Wochen oder Monaten gar nicht mehr weiss, was er sich bei der Codierung gedacht hat. Die Einarbeitung, sogar für den Entwickler der das programmiert hat, dauert also sehr lange. Was eine Herausforderung ist, wenn an der Software weiterprogrammiert werden soll.

Es ist jedoch so, dass nicht ein Entwickler an der Software arbeitet, eher ein Team an Entwicklern, und das sich nicht der gleiche Entwickler mit dem Code später auseinandersetzen wird und das es nicht zwei drei Tage Entwicklungsarbeit ist, sondern mehrere Mannjahre in vielen Fällen. Solch einen Code zu verstehen ist zwar möglich, dauert jedoch Ewigkeiten. Und wirklich keiner möchte sich die Zeit nehmen sich in solch einen Legacy Code einzuarbeiten.

Besser: Besser ist es von Anfang an im Code selbst eine passende Code Dokumentierung vorzunehmen, den Code so gut wie möglich lesbar zu machen und auch eine schriftliche Dokumentation mit der Logik anzulegen, wo auch der Code beschrieben wird (mit Screenshots) und auch die Funktionalitäten welche in der Software passieren (mit Screenshots). Nur so wird Software wirklich wartbar und ausbaubar.

Fazit

Es bestehen heutzutage immer noch unendliche “Code-Monster”, Software die uralt ist und niemand weiss, wofür bestimmte Funktionalitäten im Code bestehen.

Sogar die Programmierer selbst rätseln dann, was sich seine Vorgänger-/innen dabei gedacht haben.

Auch kleine Änderungen der Software benötigen dann sehr lange in der Entwicklung.

Das ist zwar gut für Dienstleister, denn dadurch gibt es genug Arbeit, zum Beispiel für die Wartung und die Erweiterung von Legacy Systemen. Das Ganze ist jedoch nicht wirklich effizient.

Die Realität sieht jedoch so aus, dass viele erfolgreiche Softwareprojekte fast unwartbar sind und man einfach viel Zeit und Geld in den Ausbau steckt.

Eine wirkliche Lösung für die Problematik ist noch nicht wirklich gefunden. Denn niemand (Auftraggeber, Programmierer, Dienstleister, Manager, etc.) möchte die notwendige Zeit in Dinge wie Planung oder Dokumentierung stecken.

Was sind Eurer Meinung nach die häufigsten Herausforderungen in IT Projekten?

Interessante Beiträge:
Herausforderungen bei der Softwareentwicklung und wie man diese vermeiden kann
Probleme die auftreten können

Bilder: Canva


Der Autor: Sascha Thattil arbeitet bei YUHIRO und hilft Unternehmern und Unternehmen beim einfachen Aufbau von Programmier-Teams in Indien. YUHIRO ist ein deutsch-indisches Unternehmen welches IT Firmen, Agenturen und IT Abteilungen Softwareentwickler bereitstellt.

Schreibe einen Kommentar