Selbst ist der Mann! Und die Frau!

Warum Selbermachen bei Software oftmals die bessere Lösung ist!

Als Softwareentwickler in einer kleinen Firma wird man immer wieder vor die Frage gestellt: Selbermachen oder zukaufen? Es gibt tausende von Bibliotheken und Frameworks, die einem das Blaue vom Himmel versprechen und angeblich für wenig Geld die fertige Lösung für jedes Problem bieten. Doch tun sie das wirklich?

Unsere Erfahrungen dazu sind sehr zwiespältig, was vor allem daran liegen dürfte, dass wir nicht ständig neue Projekte starten, sondern ein Projekt über mehrere Jahrzehnte warten und weiterentwickeln möchten. Unser Hauptprodukt, die CAD-Software, ist in ihrer ersten Windows-Version bereits 1991 erschienen, also mittlerweile mehr als 25 Jahre am Leben.

In dieser Zeit hat sich eine Menge getan: Beginnend mit Windows 3.1, einem 16-bit-Betriebssystemaufsatz auf MS-DOS, ging die Entwicklung über Windows NT (dem ersten alleinstehenden Windows), Windows XP und Windows 7 zum heutigen Windows 10, meist als 64-bit-System.

Insgesamt also zwei grundsätzliche Technologiesprünge (von 16- auf 32-bit und von 32- auf 64-bit) und zahlreiche kleine Sprünge, die jedes Mal teils heftige Anpassungen an der Software erforderten. Jedes Mal waren wir froh, dass wir so wenig wie möglich mittels zugekaufter Bibliotheken erledigen – denn oftmals blieben diese Bibliotheken beim Technologiewechsel auf der Strecke oder wurden mittendrin einfach mal vom Markt genommen.

In jedem dieser Fälle begann eine zeit- und geldraubende Suche nach einer neuen Bibliothek, die die bisherige möglichst komplett ersetzt. War diese gefunden, begann der Umstellungs- und Testaufwand. Und oftmals stellte sich heraus, dass der Ersatz nicht wirklich vollständig ist und eine Menge eigener Entwicklung notwendig wird, um den bisherigen Funktionsumfang wieder herzustellen.

Teilweise waren sogar mehrere Bibliotheken notwendig, um eine alte zu ersetzen, was den Aufwand noch weiter erhöhte. Und jedes Mal merkten wir, dass der ursprüngliche Kauf der Bibliothek zwar damals Entwicklungszeit gespart hatte, aber der dadurch hervorgerufenen Mangel an Eigenwissen in dem jeweiligen Teilbereich spätestens jetzt negativ zurückschlug.

Hätten wir gar auf komplette Frameworks wie beispielsweise MFC (Microsoft Foundation Classes) oder .NET gesetzt, hätten wir bei jedem größeren Wechsel nicht nur kleine Teile der Software ersetzen oder anpassen müssen, sondern gleich das ganze System. Das wäre völlig unmöglich gewesen und hätte unseren Ruin bedeutet.

Hinzu kommt, dass gerade die Frameworks wie MFC und .NET unter Windows installations- und versionskontrollseitig eine Katastrophe sind. Es liefert nicht einfach jedes Programm die notwendigen Dateien in der jeweils notwendigen Version mit und installiert sie ins eigene Programmverzeichnis – oh nein!

Die Frameworks wollen eigenständig an anderer Stelle im System installiert werden, und es wurde ein Monster von Kontrollstruktur geschaffen, um sicherzustellen, dass jedes Programm möglichst auf die richtige Version seines Frameworks zugreift. Plötzlich liegende dutzende Versionen eines Frameworks auf der Festplatte herum, weil niemand mehr einen Überblick darüber hat, welches Programm überhaupt welche Version benötigt.

Ich habe mal nachgesehen: Auf meinem Computer sind alleine 26 (!) Versionen der Runtime-Library für Microsoft Visual Studio installiert. Und davon ist keine einzige für unser CAD-System, denn wir installieren natürlich all solche Dateien direkt in unser Verzeichnis und löschen sie bei der Deinstallation wieder ordnungsgemäß!

Bevor wir also eine Bibliothek benutzen, überlegen wir erst einmal ganz genau, ob der kurzfristige Nutzen davon wirklich die langfristigen Probleme, die sie garantiert bringen wird, überwiegt. Denn Selbermachen kostet zwar anfangs etwas mehr Zeit und somit Geld. Aber langfristig hilft es, zu wissen, was man tut, und man macht sich von niemandem abhängig.

Leider ist das nicht in allen Situationen möglich, denn alles wissen und können auch wir nicht…

[EOF]

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s