Notwendigkeit des eigenen Ansatzes

Oft behaupten Personen, dass man in der Software-Entwicklung niemals Dinge doppelt tun soll.
Das mag ja grundsätzlich stimmen, doch wird es damit gleich gesetzt, dass bestehende Praktiken nicht mehr hinterfragt werden dürfen.

Ich sehe das anders: Den besten Wissenseinblick erlangt man oft erst durch den Nachbau von Bestehendem.

Das Rad wird ständig neu erfunden und auch wenn damit viel Arbeitszeit aufgewendet wird, so sind es oft jene Neuerfindungen, die wirtschaftliche Erfolge ermöglichen.

Ansonsten könnte man ja zynisch behaupten:

Doch dieses Spiel ließe sich auch bis in die tiefesten Systembibliotheken von allen Betriebssystemen zurückverfolgen.

… oder wie Uwe Boll einst scherzend meinte:

Warum soll Captain America 2 rauskommen, es gab doch schon einen ersten Teil.

Nicht immer waren Neuerfindungen von wirtschaftlichem Erfolg gekrönt. Da fällt mir SkyOS eines geschätzten Landsmannes ein, oder auch PrettyOS, dessen Entwicklung online dokumentiert wurde.
Projekte wie dieses generierten jedoch eine gewaltige Menge an Wissen, die wieder in andere Projekte einfließen konnte.

Kein Buch, das ein bestehendes Projekt zu dokumentieren versucht hätte, wäre ebenso tief ins Detail gegangen.

OpenSSL war auch über viele Jahre eine der führenden Kryptographie-Bibliothek und trotzdem möchte ich parallele Projekte wie Crypto++, GnuTLS oder die MS Crypto API nicht missen.

Auch werden weder KDE, Plasma, Gnome, LXDE ihre Entwicklung einstellen, nur weil es schon ein ähnliches alternatives Projekt gibt. Und in Sachen Entwicklung ist das gut so. Denn alle Projekte beeinflussen sich gegenseitig wenn sie ihre Features fertiggestellt haben, was in einem einzigen Projekt so nicht möglich wäre.

Auch an unseren Schulen lernen wir Dinge, auf die wir theoretisch verzichten können. Warum sollen wir rechnen lernen, wenn die Smartphones das per Sprachsteuerung tun?

Antwort: Weil es unseren Verstand erweitert und wir nur so in die Lage versetzt werden, Neues zu entdecken.

Deshalb möchte ich gerne allen Entwicklungsleitern und Entscheidungsträgern in der Softwareindustrie folgenden Rat geben:

Lasst euren Entwicklern Bildung zukommen! Auch durch aktives Forschen und Nachbauen in Projekten. Erfahrung ist nie ein Fehler auch wenn sie Zeit braucht.

Ich musste schon allzu oft feststellen, dass Schnelllösungen mit Fremdsoftware “irgendwie” hingeschmiert werden, um enge Terminpläne einzuhalten.
Doch das fehlende Detailwissen rächt sich, und dann darf der Support den Unmut der Kunden ausbaden.

Sich einen eigenen Ansatz für ein bereits gelöstes Problem zu überlegen ist nie ein Fehler.

Ich selbst habe die Vorzüge der STL zu schätzen gelernt, nachdem ich mit meinem Versuch, es besser hinzubekommen, gescheitert bin.
Das war kein Fehler sondern ein ganz essentieller Schritt in meiner Entwicklung.

Lasst euch also nie davor abschrecken, etwas auszuprobieren, etwas zu zerlegen oder etwas nachzuahmen!


Wenn sich eine triviale Erkenntnis mit Dummheit in der Interpretation paart, dann gibt es in der Regel Kollateralschäden in der Anwendung.
frei zitiert nach A. Van der Bellen
... also dann paaren wir mal eine komplexe Erkenntnis mit Klugheit in der Interpretation!