Erfolgreich Softwareprodukte entwickeln: Ein paar Tipps
Der Markt für Softwaredienstleistungen, wie Implementierung, Custom Programmierung und Wartung verschiebt sich immer mehr in den Bereich Softwareprodukte. Also Lösungen welche man nur installieren braucht und für welche es keine grosse Entwicklung benötigt.
Das beste Beispiel sind Software-as-a-Service Lösungen, welche man auf monatlicher Basis abonnieren kann.
Die Vorteile von solchen Lösungen liegen auf der Hand, weniger Instandhaltungskosten, da die Updates automatisch eingespielt werden und auch weniger Bugs, weil diese vom Bereitsteller behoben werden. Und natürlich weniger Ausgaben für teure Programmierer.
Wie kann man jedoch solche Software für die Zukunft, welche die bisherigen IT Dienstleistungen ersetzen werden, jedoch entwickeln? Im Beitrag ein paar Tipps dazu.
Zeit lassen
Die meisten Projekte werden leider noch mit der Aussage gestartet „Das ist ein sehr großes Projekt. Aber lasst Euch Zeit. Wir brauchen die fertige Version erst in zwei Monaten“.
Die Realität sieht jedoch so aus, dass besonders bei komplexen Softwarelösungen nur für die Eruierung der Anforderungen bereits mehrere Tage und Wochen gebraucht wir.
Die Wireframes und die Erstellung der Designs braucht dann wiederum zusätzlich einiges an Aufwand.
Zudem gibt es ein stetiges hin und her. Sei es zwischen dem Kunden und dem Dienstleister, oder wenn man es intern programmieren lässt, dann zwischen dem Management und den Entwicklern. Anforderungen müssen abgeglichen werden, Änderungswünsche berücksichtigt und Bugs (Fehler im System) behoben werden.
Um eine erste Betaversion von einem Softwareprodukt zu haben, braucht also immer mindestens 9 bis 12 Monate.
Nach der Liveschaltung bekommt man dann meistens das erste Feedback, bei dem man merkt „Oh, diese wichtige Funktionalität haben wir übersehen“ oder „Oh, das hatten wir in dieser Form noch gar nicht getestet“. Für diese kleineren bis grösseren Funktionalitäten und das Testing braucht man dann wiederum 6 bis 8 Monate.
Somit braucht man dann auch schnell ein bis zwei Jahre mit der Produkterstellung.
Das Besondere dabei ist jedoch auch: Man wird eine Lösung haben, die dem Endkunden einen wirklichen Mehrwert liefert. Und darum geht es bei dieser ganzen Übung. Eine IT Lösung zu liefern, welche dem Kunden einen Mehrwert liefert kann welche nur zwei Monate in der Entwicklung benötigt ist unrealistisch.
Starke Technologiebasis/ die richtige Auswahl
Wichtig ist zudem der technologische Ansatz.
Manche Technologien sind bereits ausgereift und einmal programmiert kann man diese längere Zeit ohne Änderungen oder Updates nutzen.
Ein Beispiel ist PHP. Dieses IT System gibt es bereits seit 1995 und ist seitdem stetig verbessert worden.
Auch die Frameworks basierend auf PHP sind getestet und vielfach eingesetzt. Probleme, Herausforderungen und Möglichkeiten für die Berichtigung von Bugs ist Programmierern bekannt.
Bei anderen Ansätzen sieht es bereits anders aus. Wenn man zum Beispiel mit Node.JS (im Beitrag auch mit N abgekürzt) programmiert, kann man davon ausgehen, dass man einen zusätzlichen Aufwand haben wird, um herauszufinden, wie man eine bestimmte programmiertechnische Aufgabe mit Node.JS löst.
Gleichzeitig gibt es im Vergleich zu PHP nur wenige Spezialisten und wenige Anlaufstellen (Foren, Blogs, Q&A Plattformen, etc.) worauf man sich über Node informieren kann und Fragen beantwortet bekommt.
Zudem kommen bei Node auch immer wieder neue Versionen heraus, welche zum Teil nicht Rückwärtskompatibel sind, was im Grunde genommen bedeutet, dass man zum Teil die bestehende Software von neu auf programmieren muss.
Der Aufwand ist bei N zwar höher. Dafür kann man aber von schnelleren Applikationen und besserer Skalierbarkeit profitieren.
In der IT hat also alles seine Vorteile und Nachteile. Am Ende kommt es auch darauf an wie die Anforderungen aussehen.
Bei mittleren Projekten (zum Beispiel Enterprise Lösungen, welche von einer überschaubaren Anzahl von Nutzern gebraucht wird) kann PHP die richtige Lösung sein.
Bei grossen Projekten bei denen viele Nutzer gleichzeitig auf die gleiche Lösung über das Internet zugreifen, kann N der richtige Ansatz sein.
ASP.NET, Java, Python, Android, iOS sind andere Ansätze welche in manchen Fällen passen können.
Dokumentationen führen
Eines der grössten Herausforderungen bei Softwareprojekten ist die Wartbarkeit und die Weiterführbarkeit von diesen.
Oftmals wird nicht in die Zukunft geschaut. Fragen wie:
- Was passiert wenn andere Entwickler an diesem Produkt arbeiten müssen?
- Wie verständlich ist die Logik der Entwicklung für einen externen Dienstleister?
- Wie reagiert die Programmierung auf externe Veränderungen, welche in der Zukunft passieren können?
All das kann positiv beantwortet werden, wenn es eine Code-Kommentierung und ein „Anleitungs“-Dokument für zukünftige Kollegen gibt, welche daran arbeiten werden.
In diesem ausführlichen Dokument, welches stetig von den Entwicklern aktualisiert wird, können mit Screenshots, Programmierzeilen-Code, Beschreibungen, Erklärung der Logik hinter einem bestimmten Modul, weitere Änderungen auch in der Zukunft vorgenommen werden.
Die Realität sieht heutzutage jedoch immer noch so aus, dass einfach „drauf los programmiert wird“ und dazukommende Programmierer oder neu Teammitglieder keine Lust mehr haben, an der alten Lösung weiterzuarbeiten und schlagen dann automatisch eine Erneuerung der Plattform von Grund auf vor.
Somit ist eine ausführliche und gute Dokumentation der bisherigen Arbeiten ausschlaggebend für wartbare, skalierbare und gute Softwareprodukte.
Zahlende Kunden von Anfang an
Wichtig ist auch, dass das Projekt kein Fass ohne Boden wird. Zumindest die Ausgaben sollten gedeckt sein.
Hier sollte man Kunden finden, welche die Zahlungen für die Programmierung vornehmen.
Das hat viele Vorteile:
- Wenn eine externe Person oder Firma wirklich bereit ist Geld in die Hand zu nehmen, weiss man bereits dass man auf dem richtigen Dampfer ist. Da eine externe Firma nur ein Budget aufbringt, wenn es zumindest langfristig einen Vorteil (Effizienzsteigerung, Zeiteinsparung bei Prozessen, Kostensenkung, etc.) sieht.
- Man bekommt von Anfang an Feedback und weiss ob das sinnvolle Funktionalitäten sind, welche man entwickelt. Besonders dieses konstante Feedback sorgt dafür, dass das Softwareprodukt die richtige Form annimmt und man nicht auf Annahmen hin entwickelt.
Alternative 1: Angel Investoren/ Investoren
Die andere Alternative ist es mit Investoren zu arbeiten.
Meistens muss man zumindest den Prototyp aus der eigenen Tasche bezahlen.
Um eine bezahlbare Version zu haben, kann man die lediglich die wichtigste Funktionalität erstellen lassen und der Rest kann klickbare Dummy Funktionalitäten sein.
Diesen kann man dann bei Investoren vorlegen.
Auch das ist ein Proof of Concept: Wenn man denn Menschen findet, die bereit sind Geld in die Hand zu nehmen, um zu unterstützen, dann ist das ein erster Hinweis, dass man auf dem richtigen Weg ist.
Alternative 2: aus bestehenden Einnahmen
Viele Unternehmungen und Dienstleistungen erwirtschaften bereits einen Überschuss. Auch aus diesem kann man die Kosten für die Software stemmen.
Alternative 3: eigenes Geld
Dies ist wohl die schlechteste Idee die man haben kann. Angespartes Geld zu nutzen, um zu entwickeln ist meistens kein guter Ansatz.
Denn zu schnell ist das Budget aufgebraucht und zudem wird man zu zögerlich sein, grössere Aufwendungen auf einmal zu machen.
Und wenn das ganze Projekt nicht zum Erfolg wird, dann ist das Geld aufgebraucht.
Also lieber auf die Eingangs erwähnten Alternativen setzen.
Zur Abrundung: Ein Support System
Ein Supportsystem rundet das Ganze ab. Denn Nutzer wollen ihr Feedback geben und ihre Probleme und Fragen mit dem System gelöst bekommen.
Gleichzeitig kann man durch diesen Support auch Wissen erhalten, wie man das Softwareprodukt verbessern kann.
Und dann kommt noch hinzu dass man eine Art Vertrieb einbauen kann, für Fragende die noch nicht zahlende Kunden sind.
Fazit
Die Hauptbereiche für erfolgreiche Software sind:
- die notwendige Zeit aufbringen
- die passende Technologie nutzen
- Dokumentation führen
- Zahlende Kunden von Anfang an finden oder auf Investoren setzen (Alternativ aus bestehenden Einnahmen aus anderen Geschäften finanzieren)
- Ein Support und Pre-Sales System einbauen
Welche weiteren Punkte sehen Sie in der Softwareprodukt-Entwicklung?
Interessante Beiträge:
Mehr Informationen zur Softwareentwicklung auf Atlassian
So läuft Softwareentwicklung ab
Flickr.com/ GDC/ Jeremy/ thethreesisters
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