Eine wachsende Zahl von Unternehmen und Organisationen investiert in individuelle Softwareentwicklung und IT-Lösungen, die genau auf ihre spezifischen Bedürfnisse zugeschnitten sind. Dies kann jedoch ein teures Unterfangen werden, sodass sich die Projekt-Sponsoren ganz genau darüber im Klaren sein sollten, worin der Mehrwert besteht, den herkömmliche kommerzielle Lösungen – falls vorhanden – nicht liefern können.
Dieser Blogeintrag richtet sich an jeden, der verstehen möchte, was individuelle Softwareentwicklung ausmacht und worin der Unterschied zwischen individueller Softwareentwicklung und kommerzieller Software besteht. Des Weiteren kann dieser Eintrag eine Hilfestellung leisten, wenn es um individuelle Software vs. kommerzielle Alternativen geht.
Was ist individuelle Softwareentwicklung?
Individuelle Softwareentwicklung ist der Prozess zur Erstellung einer Softwarelösung, die für einen speziellen Bedarf entwickelt wird. Sie umfasst die verschiedenen Stufen des Softwareentwicklungslebenszyklus, inklusive Konzeption, Planung, Entwicklung, Prüfung, Bereitstellung, Wartung und weitere Iterationen.
Diese Form von Software wird entweder inhouse oder von einem Softwareentwicklungsunternehmen erstellt, um einer klar-definierten Benutzergruppe mit spezifischen Anforderungen oder Vorlieben gerecht zu werden. Hierbei kann es sich um Käufer von Gütern oder Dienstleistungen, um Mitarbeiter einer Organisation oder um die Bewohner einer Region oder Stadt handeln.
Individuelle Software-Beispiele
- Kundenspezifische Webportale
- Benutzerdefinierte CMS für das Unternehmensportal
- Eine App zur Messung der Energieleistung von Solarinstallationen
- E-Learning-Plattform
Individuelle Softwareentwicklung ist die Alternative zur kommerziellen Softwarelizenz. Kommerzielle bzw. Commercial-off-the-Shelf Software (COTS) bezieht sich auf ein Softwareprodukt, das für ein allgemeines Bedürfnis erstellt wurde und mit Lizenz an diese Sorte von Nutzern verkauft wird.
Kommerzielle Software-Beispiele
- Microsoft Office (Produktivitätssoftware)
- EA Sports‘ FIFA 2021 (Videospiel)
- Xero (Buchhaltung SaaS für KMUs)
- Basecamp (Projektmanagement SaaS)
Um auch umsetzbar zu sein, muss kommerzielle Software den Bedürfnissen einer breit gefächerten Masse von zahlungswilligen Kunden gerecht werden, um die Entwicklungs- und Betriebskosten, die Wartung, neue Iterationen und das Marketing abzudecken (was oft eine größere Investition ist als die Entwicklungs- und Betriebskosten selbst). Natürlich muss darüber hinaus der Profit stimmen, um das Risiko der Investoren zu rechtfertigen.
Um eine angemessene Rendite zu erhalten, sollte die Software entweder Kosten einsparen oder Einnahmen generieren.
Individuelle Software kann zur kommerziellen Software werden
Eine wesentliche Anzahl von kommerziellen Softwareprodukten haben tatsächlich als individuelle Softwareentwicklungsprojekte begonnen. Sie wurden ursprünglich entwickelt, um die Bedürfnisse einer bestimmten Personengruppe abzudecken, bevor man zu dem Schluss gekommen ist, dass es sich hierbei um ein massentaugliches Produkt handelt.
Ein perfektes Beispiel für ein Softwareprodukt, das den Übergang von individueller zur kommerziellen Softwarelösung gemacht hat, ist das Produktivitäts- und Kollaborations-Tool Slack. Slack hat als Nebenprojekt eines Teams begonnen, das an einem – wie es hoffte – innovativen, originellen und nicht gewalttätigen Massively-Multiplayer-Online-Game arbeitete, einer Art umgekehrtem Fortnite, in dem alle Spieler zusammenarbeiten, anstatt aufeinander zu schießen.
Das Softwareentwicklungsteam, das das Spiel erstellte, hatte das Gefühl, dass die bis dato kommerziellen Kollaborations- und Projektmanagement-Tools ihre Bedürfnisse nicht erfüllten, sodass Slack als Nebenprojekt entstand. Features wurden bei Bedarf hinzugefügt und als sich das Spiel als Flop herausstellte, da im Kontext von Videospielen Gewalt gefragter als Zusammenarbeit ist, hatte Firmengründer Stewart Butterfield die Idee, Slack einer breiteren Masse zu präsentieren.
Das Spiel, Glitch, wurde im Dezember 2012 offiziell beendet und Slack im August 2013 als kommerzielles Softwareprodukt eingeführt. Innerhalb von nur 8 Monaten wurde der Wert auf über 1 Milliarde US-Dollar geschätzt, nachdem keinerlei Geld für traditionelles Marketing ausgegeben werden musste. Heute ist Slack Technologies ein öffentliches Unternehmen mit einem Wert von rund 26,5 Milliarden US-Dollar.
Hybride – zwischen kommerzieller und individueller Software
Einige Softwareprodukte stellen eine Mischung aus individueller und kommerzieller Software dar. White-Label-Software, die von einem Diensteanbieter erworben und anschließend von einem Unternehmen als eigenes Produkt vermarktet wird, könnte als kommerzielle Software beschrieben werden, die sich an ein spezifisches, in der Regel B2B-Publikum, richtet.
Da sie jedoch vom Kunden vermarktet wird und auch weitere Anpassungsmöglichkeiten mitbringt, ist White-Label-Software keine rein kommerzielle Software im traditionellen Sinne.
Salesforce CRM (Customer Relationship Management), SAP ERP (Enterprise Resource Planning) Installationen sowie Webseiten und E-Commerce-Stores, die auf WordPress und der Shopify-Plattform erstellt wurden, sind ebenfalls Beispiele für Softwareanwendungen, die weder komplett kommerziell noch individuell sind.
In all diesen Beispielen gibt es ein zentrales kommerzielles Produkt, das per Abonnement bezahlt wird. Die meisten Benutzer dieser Softwareprodukte zahlen jedoch zusätzlich für Softwareentwickler, die auf die Plattformen spezialisiert sind, um diese an die spezifischen Bedürfnisse und Workflows ihrer Organisation anzupassen.
Zum Beispiel werden nur 10% von SAPs ERP-Installationen nicht angepasst, während es sich bei 25% um äußerst kundenspezifische ERP-Umgebungen handelt.
Benötigen Sie individuelle Software oder sind COTS oder kommerzielle Lösungen die bessere Wahl?
Individuelle Softwareentwicklungsprojekte sind keine Entscheidungen, die leicht getroffen werden sollten. Denn hierzu müssen entweder viele interne Ressourcen bereitgestellt oder erhebliche finanzielle Investition gemacht werden, um solch ein Projekt umzusetzen.
Auch wenn Sie die individuelle Softwareentwicklung auslagern, müssen Personen in Ihrer Organisation Zeit damit verbringen, mit dem Softwareentwicklungsteam des gewählten Anbieters zusammenzuarbeiten, um sicherzustellen, dass das Endprodukt den jeweiligen Zweck erfüllt.
Wenn Sie sich für einen agilen Ansatz entscheiden – der häufigsten Methodik für die Softwareentwicklung – werden die Ressourcen während den gesamten Iterationen laufend zugewiesen.
Sogar ein relativ unkompliziertes individuelles Softwareprodukt, das auf detaillierten vordefinierten Spezifikationen erstellt wird, benötigt Inhouse-Mitarbeiter, um diese detaillierten Spezifikationen zu erstellen und zu gewährleisten, dass das Produkt pünktlich und innerhalb des Budgets erstellt wird.
Vor- und Nachteile der individuellen Softwareentwicklung
Individuelle Softwareentwicklung ist in vielen Fällen im Vergleich zu kommerziellen COTS oder (oftmals teuren) maßgeschneiderten Alternativen die strategisch beste Wahl. Und manchmal gibt es sogar gar keine andere Wahl, da keine kommerziellen Softwareprodukte vorhanden sind, die das jeweilige Bedürfnis abdecken.
Eine sorgfältige Kosten-Nutzen-Analyse, die alle Verpflichtungen und Ressourcen beinhaltet, sollte vor der Entscheidung für eine individuelle Softwarelösung durchgeführt werden.
Zur vorläufigen Entscheidung für die Notwendigkeit eines individuellen Softwareprodukts können folgende Vor- und Nachteile berücksichtigt werden.
Vorteile individueller Software
Die Stärken individueller Software im Vergleich zu COTS oder kommerzieller Software sind:
Maßgeschneidert auf Ihre Bedürfnisse und Arbeitsabläufe
Der wichtigste Grund, sich für die Entwicklung von individueller Software zu entscheiden, ist die Tatsache, dass alle Anforderungen genau erfüllt werden können. Selbst anpassbare kommerzielle Software kommt mit Einschränkungen und Änderungen können schnell ins Geld gehen.
Mit individueller Software haben Sie dagegen fast die vollständige Kontrolle. Das bedeutet natürlich nicht, dass es keine Kompromisse gibt, jedoch ist hier der Level an Kontrolle um einiges höher.
Ermöglicht die Entwicklung von tatsächlich benötigter Software anstelle einer Lösung, von der nur angenommen wurde, dass sie benötigt wird
Jeder, der jemals an einem agilen Softwareentwicklungsprojekt beteiligt war, wird die Entwicklung in puncto Projektumfang und Spezifikationen zu schätzen wissen, die sich typischerweise über den Verlauf des gesamten Prozesses vollzieht. Dahinter verbirgt sich das eigentliche Kernprinzip der agilen Methodik.
Es basiert auf dem Prinzip, dass es zu Prozessbeginn nicht möglich ist, jedes Detail in einem komplexen System festzulegen. Stattdessen werden Annahmen anhand von Benutzerdaten und Feedback getestet, überprüft und ggf. angepasst.
Die agile Methodik bringt hierbei einen Level von Unsicherheit in den individuellen Softwareentwicklungsprozess. Das Produkt, das am Ende des Prozesses steht, deckt sich möglicherweise nicht mit dem, was sie ursprünglich erwartet haben.
Aber die Erfahrung hat gezeigt, dass die Überprüfung von Annahmen, um diese bei Bedarf zu verändern, zu besserer Software führt, die letztendlich billiger und schneller entwickelt werden kann. Daher ist die agile Vorgehensweise so beliebt, selbst wenn hierdurch ein wenig mehr Unsicherheit in den Prozess kommt.
Kommerzielle Software kann nur bis zu einem gewissen Grad die genauen Bedürfnisse des Benutzers abdecken, da es sich hierbei im Regelfall um One-fits-all-Lösungen handelt.
Größeres Renditepotenzial
Bis auf Freeware handelt es sich bei Software immer um eine Investition, ganz unabhängig davon, ob es sich hierbei um individuelle oder kommerzielle Software handelt. Gut entwickelte Custom-Software kann jedoch möglicherweise einen größeren Wettbewerbsvorteil als kommerzielle Software bieten, selbst wenn diese angepasst werden kann.
Außer den Kosten gibt es wenig Eintrittshürden, wenn sich ein Wettbewerber der gleichen kommerziellen Software bedienen möchte, um den Vorteil auszugleichen. Das geht jedoch nicht bei individueller Software, da diese für den Besitzer exklusiv ist.
Wenn hierdurch ein Mehrwert geschaffen wird, entweder durch Effizienz in Arbeitsprozessen, Zeit- und Geldeinsparungen oder durch ein besseres Kundenerlebnis, kann das Renditepotenzial von individueller Softwareentwicklung unvergleichliche Höhen erreichen.
Kann Probleme lösen oder neue Effizienzsteigerungen erreichen, die bis dato nicht durch kommerzielle Softwarelösungen adressiert wurden
Nicht jeder Bedarf kommt häufig genug vor, um ein kommerzielles Softwareprodukt zu rechtfertigen. Das bedeutet im Umkehrschluss jedoch nicht, dass die Erstellung von individueller Software für den speziellen Bedarf ungerechtfertigt ist.
Wenn keine kommerzielle Software zur Abdeckung eines speziellen Bedarfs vorhanden ist und eine Kosten-Nutzen-Analyse die Investition rechtfertigt, sollten die Vorteile zur Erstellung ausgenutzt werden.
Leichtere Integration mit anderer Software und Systemen
Individuelle Software kann für eine nahtlose Integration mit anderer Software und Systemen erstellt werden. Bei kommerzieller Software ist es dagegen eher schwierig und teuer, eine genaue Passform zu finden. „Patch“-Lösungen können zu zukünftigen Komplikationen und Unzuverlässigkeiten führen.
Skalierbarkeit
Gut entwickelte, individuelle Software lässt sich anhand des Firmenwachstums skalieren. Zukünftige oder potenzielle Bedürfnisse lassen sich somit anhand der tatsächlichen Notwendigkeit ohne großen Aufwand anpassen.
Kommerzielle Software ist in der Regel nur bis zu einem gewissen Punkt skalierbar und beinhaltet in der Regel auch Gemeinkosten, wie z. B. zusätzliche oder teurere Lizenzen und Abonnements, die sich je nach Nutzungsgrad erhöhen. Individuelle Software liefert dagegen Skaleneffekte für die Unternehmen.
Vermeidung von Verkäufer-Lock-in
Organisationen können bei kommerzieller Software abhängig vom Händler werden, wenn diese strategisch wichtig und fester Bestandteil von Prozessen und IT-Systemen ist. Hierdurch können Firmen in eine Abhängigkeit geraten, selbst wenn die Bedingungen dieser Beziehung immer weniger attraktiv werden.
Individuelle Softwareentwicklung bietet Unabhängigkeit als Eigentümer sowie Kontrolle über strategisch wichtige Software, die hierdurch zum Vermögenswert wird.
Sicherheit
Individuelle Software kann entwickelt werden, um spezifische oder erhöhte Sicherheitsanforderungen zu erfüllen, die von den jeweiligen Regulierungsbehörden gefordert oder vom Unternehmen selbst benötigt werden. Sogar die größten kommerziellen Softwareanbieter wie Microsoft, IBM und SAP haben in den letzten Jahren unter Sicherheitsverletzungen gelitten, von denen einige die Systeme und Daten ihrer Kunden offengelegt haben.
Nachteile individueller Software
Einige Nachteile zur individuellen Softwareentwicklung umfassen:
Kosten
Die Erstellung individueller Software benötigt im Vergleich zu kommerzieller Software erhebliche Investitionen. Wenn Sie jedoch vorhaben, bestimmte Arten von kommerzieller Software anzupassen, kann dies ebenfalls schnell ins Geld gehen, vor allem wenn es nur einen begrenzten Pool von Entwicklern gibt. Einige kommerzielle Softwarelösungen können auch von Entwicklern angepasst werden, die vom Softwarebesitzer akkreditiert sind.
Stellen Sie daher sicher, dass Sie die Kosten und den Arbeitsaufwand genau überprüfen.
Zeitaufwand
Individuelle Softwareentwicklung, ist je nach Komplexität des Systems eine zeitaufwendige Angelegenheit, wenn man die Erfolgschancen ausreichend erhöhen möchte.
Selbst wenn die Entwicklung an ein spezialisiertes Softwareunternehmen ausgelagert wird, sollte der Projektsponsor trotzdem in den gesamten Entwicklungslebenszyklus eingebunden sein. Dies ist insbesondere während der ersten Planungsphase erforderlich, wenn Ziele und Funktionen etabliert werden.
Eine komplexe Software mit einer wichtigen strategischen Rolle wird wahrscheinlich anhand eines agilen, iterativen Prozesses über einen längeren Zeitraum entwickelt, in dem der Projektsponsor in Zusammenarbeit mit dem Entwicklungsteam die erforderlichen Ressourcen zuteilt.
Wahl des richtigen Softwareentwicklungspartners
Häufig ist die Auslagerung der individuellen Softwareentwicklung die beste Strategie, wobei die Wahl des richtigen Entwicklungspartners zum ausschlaggebenden Erfolgsfaktor des Projekts wird. Sie sollten sich der Auswahl der Software-Agentur mit einer klaren Methodik annähern und Recherche und Due-Diligence betreiben.
Stellen Sie daher sicher, dass Sie mit einem Entwicklungspartner zusammenarbeiten, der Erfahrungen mit der Art von Software hat, die Sie erstellen möchten und ggf. auch über den gewünschten Tech-Stack verfügt, falls bekannt. Zum Beispiel sind die besten mobilen Anwendungsspezialisten nicht unbedingt die richtige Wahl für eine Desktop-Applikation mit komplexer Cloud-Native-Architektur. Und umgekehrt.
Die Aufstellung eines internen Softwareentwicklungsteams erfordert Engagement
Wenn Sie sich dazu entscheiden, Ihre Softwarelösung inhouse zu entwickeln, was dann sinnvoll sein kann, wenn es sich um ein komplexes, strategisch wichtiges Produkt handelt, das Sie über einen längeren Zeitraum erweitern möchten, müssen Sie ein Softwareentwicklungsteam direkt einstellen.
Die Zusammenstellung des richtigen Teams kann ein schwieriger und zugleich zeitaufwendiger Prozess sein. Wenn Sie Vollzeit-Mitarbeiter einstellen, benötigen Sie darüber hinaus langfristige Klarheit über Workloads und Projektzyklen. Entwickler und andere IT-Spezialisten sind teure Mitarbeiter und Softwareentwicklungszyklen können schwankende Ressourcenanforderungen aufweisen.
Wissen Sie genau, wie viele Spezialisten Sie benötigen, kennen Sie ihr Profil und Tech-Stack und können Sie mit Sicherheit sagen, dass die Arbeitsbelastung gleichmäßig bleibt, sodass sich ein stabiles Team auszahlen wird? Und wie können Sie ein wichtiges Team-Mitglied bei Ausfall bestmöglich ersetzen, ohne das Projekt zu gefährden?
Größere Nachteile, wenn die individuelle Software nicht den gewünschten Mehrwert liefert
Investitionen, die die größten Renditen versprechen, kommen im Regelfall auch mit dem größten Risiko, sollte das Projekt schieflaufen. So verhält es sich leider mit den meisten Chance-Risiko-Profilen.
Wenn die individuelle Softwareentwicklung nicht korrekt umgesetzt wird und das Endprodukt entweder nicht für den Zweck geeignet ist oder nicht den gewünschten Mehrwert liefert, sind die Nachteile größer, als wenn man sich von Anfang an gleich für eine kommerzielle Lösung entschieden hätte.
Andere Entscheidungen und Überlegungen, die für die individuelle Softwareentwicklung von Bedeutung sind
Wenn Sie sich dazu entscheiden, ein individuelles Softwareentwicklungsprojekt zu starten, gibt es verschiedene Überlegungen und Entscheidungen, die Sie in Zusammenhang mit dem Softwareentwicklungsteam ergreifen müssen. Hierzu zählen:
Tech-Stack
Ganz gleich welche Art von individueller Software Sie entwickeln, egal ob ein relativ kleines, einfaches oder doch ein großes, komplexeres Projekt, Sie werden Entscheidungen bzgl. der Technologien treffen müssen.
Dies wird von Fragen beeinflusst wie:
Wird die Software Web- oder Cloud-basiert sein?
Wenn die Software Cloud-basiert ist, wird sie auf einer öffentlichen, privaten oder hybriden Cloud laufen?
Wenn die Software auf einer öffentlichen Cloud ausgeführt wird, wird diese nativ für die Cloud-Plattform eines bestimmten Anbieters wie AWS oder Microsoft Azure erstellt? Oder soll es sich hierbei doch um ein Cloud-agnostisches Projekt handeln, um einem Anbieter-Lock-in vorzubeugen?
Mit welchen Programmiersprachen, Frameworks oder Bibliotheken werden das Front- und Backend erstellt? Vermeiden Sie Nischentechnologien, die jetzt oder in Zukunft teuer sind und für die sich nur schwer Mitarbeiter finden lassen. Wenn möglich, investieren Sie in reife, stabile, zukunftsfähige Technologien und Werkzeuge, für die es bereits einen reichhaltigen Pool von Entwicklern und Spezialisten auf dem Markt gibt.
Softwareentwicklungsmethodik
Eine weitere, wichtige Entscheidung, die mit dem Softwareentwicklungsteam erstellt werden sollte.
Erstellen Sie Ihre Software anhand der agilen Methodik? Wenn ja, welches agile Framework ist am besten geeignet? Einige der beliebtesten Methoden und Frameworks, die in der individuellen Softwareentwicklung verwendet werden, umfassen:
Agile und die verschiedenen Formen wie Scrum, Kanban, Adaptive Software Development (ASD), Rapid Application Development (RAD) und das Scaled Agile Framework (SAFe), wenn es sich um ein großes Projekt handelt, an dem gleich mehrere Teams arbeiten.
DevOps wird häufig mit der agilen Philosophie kombiniert und beruht auf dem Prinzip der Vereinheitlichung von Entwicklungs- und Betriebsteams, sowie deren Rollen und Verantwortlichkeiten.
Wenn Sie ein relativ einfaches individuelles Softwareprodukt entwickeln, können Sie auch den traditionellen Wasserfall-Ansatz zur Hilfe nehmen. Hierbei werden detaillierte Spezifikationen im Vorfeld definiert, sodass der Softwareentwicklungslebenszyklus ohne große Änderungen und Überraschungen durchgeführt werden kann.
Oder Sie können sich für eine hybride Lösung wie kontrollierter oder agiler Festpreis entscheiden, der die Vorteile beider Ansätze zusammenbringt.
Zusammenfassung
Individuelle Softwareentwicklung ist eine beliebte Wahl und kann zu erheblichen Vorteilen führen, von denen hier viele angeschnitten wurden. Es beinhaltet jedoch auch ein Risiko und benötigt viele Ressourcen. Das bedeutet, dass es sich hierbei um eine strategische Entscheidung handelt, die nur nach Berücksichtigung aller relevanten Aspekte getroffen werden sollte.
Wir hoffen, dass dieser Artikel Ihnen ein besseres Verständnis dafür gegeben hat, worum es sich genau bei individueller Softwareentwicklung handelt und welche Überlegungen gemacht werden sollten, wenn es um die Wahl zwischen individueller Software und kommerziellen Alternativen geht.