Bananen-Software oder auch Bananaware bezeichnet in der Softwareentwicklung eine Lösung, die anstatt mit Qualität vor allem durch unausgereifte Funktionen auffällt und Ihre Leute ganz schön auf Trapp halten kann – was nicht immer lustig ist. Die Metapher mit der Banane liegt auf der Hand: Geerntet wird grün (unreif), denn gelb und reif wird die Banane von alleine im Handel oder beim Kunden in der heimischen Obstschale. Neben Bananen-Software haben sich auch Begriffe wie „Continuous beta“ oder „Perpetual beta“ (etwa dauerhafte Vorab-Version) durchgesetzt. Neben mangelndem Qualitätsbewusstsein und Kostendruck seitens des Kunden, gibt es durchaus Softwareentwicklungs-Strategien, die ganz bewusst auf diesem Konzept beruhen.
Um nicht bei Ihrem eigenen individuellen Softwareentwicklungs-Projekt das grüne Wunder zu erleben, knöpfen wir uns Bananen-Software mal ganz genau vor:
Wussten Sie, dass 2020 etwa 30 Millionen Fahrzeuge zurückgerufen wurden und etwa sieben Prozent davon aufgrund von Software-Fehlern? Mein Gott, das kann doch mal passieren, denken Sie sich vielleicht. Mitte 2021 waren es schon über 18 Millionen und raten Sie mal, was die Top Ursachen waren:
Probleme in der Softwareentwicklung haben also extrem zugenommen und machen zum anderen einen nicht zu unterschätzenden Anteil an sicherheitsrelevanten Reklamationen aus. Haupttreiber ist vor allem der schärfer werdende Konkurrenzdruck und immer kürzere Entwicklungszeit. Die Ära als man noch stolz auf die Unverwüstbarkeit von Trabbi und Käfer war, ist vorbei. Heute gilt „Geiz ist geil“ – auch wenn der ein oder andere Wir-hassen-teuer-Beschwörer aufgrund des eigenen drohenden Untergangs sich mit solchen markigen Sprüchen nun etwas zurückhält.
Wie konnte es nur so weit kommen? Die Gründe liegen häufig in einem zunehmend mangelnden Qualitäts-Bewusstsein. Denn die meisten Softwareentwickler lieben ihren Job und würden am liebsten den ganzen Tag an ihrer Software feilen, gäbe es da nicht den wirtschaftlichen Druck.
Was für die Autoindustrie im Großen gilt, gilt auch für die individuelle Softwareentwicklung im Kleinen. Folgendes fiktives Szenario: Sie wollen eine Webanwendung entwickeln und vergleichen zwei IT-Dienstleister. Der eine bietet Ihnen die Stunde Softwareentwicklung für 150 Euro an, der andere für 75 Euro. Für wen entscheiden Sie sich? Glauben Sie mir: Egal was Sie für die 150 Euro auch kriegen, ob Rechte am Quellcode, ob zusätzliche Software-Tests, ob Beratungsstunden, egal ob Ihre Leute Doktor-Titel haben oder weltbekannte Programmier-Gurus sind, Sie werden sich häufig für die 75-Euro-Billig-Bude entscheiden. Denn mit den ganzen Nerd-Schmakazien, die Ihnen geboten werden, können Sie fachlich eh nichts anfangen. Seien Sie mal ehrlich.
Aber wie machen die anderen das bloß mit den 75 Euro? Nun, da gibt es einen ganzen Sack von Taschenspielertricks, den Sie als IT-Dienstleister für Softwareentwicklung nutzen können:
Das Ergebnis: Sie können schnell und billig liefern. Die Testung der Software übernimmt der Kunde – quasi als unfreiwilliges Versuchskaninchen in Ihrem Softwareentwicklungsprojekt. Oder sollte ich besser sagen „Softwareentwicklungs-Experiment“?
Probieren geht über Studieren oder wie der alte Murphy vermeidlich sagte: „Kein Schlachtplan überlebt den Feindkontakt“. Software muss halt an die frische Luft, denn viele Probleme tauchen erst im produktiven Betrieb auf.
Der alte Open Source Haudegen Tim O’Reilly sagte mal:
„Users must be treated as co-developers, in a reflection of open source development practices (even if the software in question is unlikely to be released under an open source license.) The open source dictum, ‚release early and release often‘, in fact has morphed into an even more radical position, ‚the perpetual beta‘, in which the product is developed in the open, with new features slipstreamed in on a monthly, weekly, or even daily basis. It’s no accident that services such as Gmail, Google Maps, Flickr, del.icio.us, and the like may be expected to bear a ‚Beta‘ logo for years at a time.“
Sie haben ganz richtig gehört: Sie bekommen schnell und regelmäßig Ihre Updates und werden dafür zum Co-Entwickler befördert. Was für eine Ehre. Aber keine Sorge, damit ist sicherlich nicht gemeint, dass Software gänzlich ungetestet auf den Markt kommt. Vielmehr geht es darum, möglichst eng mit dem Kunden zusammenzuarbeiten, da vieles einfach nicht im stillen Keller durch Softwareentwicklungs-Werkzeuge real getestet werden kann. Durch den frühen Kontakt mit dem rauen Alltag des End-Nutzers sollen möglichst schnell Software-Fehler aufgedeckt und vor allem unnötige Funktionen vermieden werden.
Da Sie jetzt wissen, was Bananen-Software ist, welchen Schaden sie anrichten kann und warum es manchmal hilfreich ist, ein bisschen Banane zu sein, stellt sich die Frage, wie man in der Softwareentwicklung vermeidet, ins verkehrte Früchtchen zu beißen.
Überlegen Sie mit Ihrem Softwareentwickler, welche technischen und fachlich-inhaltlichen Tests für Ihre Lösung am wichtigsten sind. Nicht zu unterschätzen ist dabei die Entwicklung einer entsprechenden Testumgebung für verschiedene Szenarien:
Neben dem Aufbau einer möglichst realistischen Infrastruktur, gibt’s in der Softwareentwicklung eine Reihe an Möglichkeiten, um Programm-Routinen automatisiert immer und immer wieder ohne viel manuelles Heckmeck in typischen Anwendungsfällen auf Fehler zu überprüfen. Zu diesem Werkzeugkasten gehören:
Solche Tests können Sie sich getrost als Software vorstellen, die Software testet. Schön automatisiert und nach Belieben in einer gebetsmühlenartigen Dauerschleife – zu Schade, dass das keine echten Kunden-Bestellungen sind. Das verursacht natürlich einen gewissen Aufwand. Als Belohnung vermeidet man aber peinliche Unannehmlichkeiten gegenüber Kunden, Lieferanten und Behörden. Oder wollen Sie Ihrem Zulieferer erklären, warum Ihre Software-Lösung auf eigene Faust 100 Chargen Premium-Material kauft, obwohl Sie nur 10 bestellen wollten. Tja! Eine kleine Null für die Software, eine große Null für Ihre Buchhaltung.
Wer den Schritt der automatisierten Software-Tests nicht gehen will, kann natürlich auch händisch seine Software ausprobieren:
Da manuelles Testen immer mit personellem Aufwand und damit auch mit dem einen oder anderen Euro verknüpft ist, sollten Sie sich mit Ihrem Softwareentwickler offen und transparent über die Aufgabenverteilung austauschen.
Empirisch betrachtet, macht das liebe Testen etwa 20% der Gesamt-Projektzeit bzw. -Kosten aus. Bei komplexen Anwendungen, wie z.B. Micro Services (viele kleine Web-Dienste), kann der Anteil sich auch auf 30-50% erhöhen. Plant Ihr Dienstleister weniger ein, heißt das für Ihre Mitarbeiter mehr Arbeit und jede Menge Opportunitäts-Kosten. Denn monotone Klick-Marathons können ganz schön aufs Gemüt drücken und sind nicht jedermanns Sache – schließlich hat Ihr Ingenieur oder Ihre Buchhalterin besseres zu tun. Entsprechend sollten Sie hier nochmal mit Ihrem IT-Dienstleister für Softwareentwicklung nachschleifen bzw. nachrechnen, was die schwere Bürde eines Software-Tests-Sisyphos Ihnen kostentechnisch wert ist.
Sie sehen: Gut Ding will Weile haben. Wollen Sie sich nicht zum Affen machen und Bananen-Software vermeiden, muss im Voraus getestet werden. Ein professioneller Dienstleister für Softwareentwicklung, wie die PI Informatik, wird dieses Thema offen ansprechen und die hinsichtlich Ihrer personellen und finanziellen Ressourcen richtige Test-Strategie mit Ihnen entwickeln. Ob nun automatisiert mit Unit-, Integrations- oder gar End-to-End-Tests oder einfach durch wildes, aber schnelles und kostengünstiges Herumklicken bleibt Ihnen überlassen. Hierbei haben Sie als Kunde natürlich auch die freie Entscheidung, wer für welche Tests verantwortlich ist. Für den Fall, dass Sie sich unsicher sind, haben wir bei uns ein gemütliches Sofa, auf dem wir ganz offen darüber reden können.
Fazit: Am Ende können Sie sich frei entscheiden, ob Sie sich bei ungetesteter Billig-Bananen-Software die Haare raufen oder einfach das Ergebnis professioneller Softwareentwicklung genießen wollen.