Produkt oder Code?

Es gibt zwei Entwickler-Typen. Die, die versuchen ihren Programmcode möglichst strukturiert und sauber aufzubauen und die, die möglichst schnell versuchen ein Produkt zu veröffentlichen. Man könnte sie also durch die folgende Frage definieren:

Ist dir das Produkt wichtiger, oder der Code?

Wem das Produkt wichtiger ist, der sieht das Programmieren selbst nur als Mittel zum Zweck. Der Entwickler kümmert sich nicht um Objektorientierung, Designpatterns, Testing und Ähnliches. Der Entwickler schreibt einfach seinen Code Zeile für Zeile herunter, packt ein paar Funktionen darum und nennt es dann Functional Programming. Am Ende kommt ein Produkt heraus, das mehr oder weniger gut funktioniert, dafür aber sehr viele Features bietet und vor allem in kürzester Zeit entstanden ist. Der Vorteil ist klar: Quantität.

Wer Wert auf guten Code legt, denkt bei jeder Zeile, die er schreibt, meist zweimal nach. Er formatiert um und strukturiert das Programm so, dass es auch in Zukunft einfach erweitert und gewartet werden kann. Er schreibt Tests und sorgt dafür, dass alle Features so funktionieren, wie sie sollen. Aber all das kostet Zeit, was zur Folge hat, dass das Produkt am Ende länger braucht und mit weniger Features auskommt. Für diesen Typ zählt also Qualität.

Was bist du?

Stell dir bitte einmal die Frage, in welche Kategorie du dich einordnen würdest. Ich selbst habe in meiner Entwicklerkarriere beide Typen durchlebt. Angefangen habe ich - wie so viele - mit einfachen PHP-Scripts. Ich hatte keine Ahnung was Objekte sind, ich wusste nicht einmal wirklich wie Funktionen funktionieren und habe mir so das Skripten mit PHP beigebracht. Meine ersten Projekte sind entstanden. Von Sicherheit, OOP, TDD, usw. hatte ich keine Ahnung, aber meine Produkte hatten viele Features und mit den Problemen bin ich irgendwie klargekommen.

Diese Produkte sind übrigens die erfolgreichsten Produkte gewesen.

Dank Ausbildung und Selbstlernen ist mir mittlerweile der Code wichtiger. Das soll nicht heißen, dass mir das Produkt egal geworden ist. Im Gegenteil. Man könnte sagen das Produkt ist mir so wichtig, dass mir auch die Basis - der Programmcode - wichtig ist. Deswegen möchte ich kein Produkt anbieten, welches nicht auch eine solide Basis hat.

Das Problem

Hier bin ich also. Ich schreibe “schönen” Code, welcher sich testen, erweitern, modularisieren und anpassen lässt. Code, der solide, sicher und simpel ist. Natürlich ist mein Code noch lange nicht perfekt - wenn das überhaupt möglich ist - und ich habe noch viel zu lernen, aber ich bin nicht mehr das typische “Scriptkiddie”, das den Code für das fertige Produkt “hinrotzt”. Trotzdem sehe ich immer wieder, dass genau dieser Typ Entwickler am meisten Erfolg hat. So gut wie jedes Produkt, dessen Quellcode ich gesehen habe, ist genau aus dieser Grütze entstanden. Warum? Genau aus den oben genannten Gründen. Dem Endandwender ist es egal, ob dein Code getestet, sicher oder flexibel ist. Dem Endanwender ist es auch egal, ob der Code aus einer einzigen index.php-Datei mit 100.000 Zeilen Spaghetticode besteht. Den Endanwender interessiert das Produkt und dessen Features. Und diese kosten nunmal wenn sie “richtig” gemacht werden wesentlich mehr Entwicklungszeit. Zeit, die wir in der heutigen Welt nicht haben.

Dass solche Produkte nicht wirklich skalieren, ist zu Anfang egal. Wichtig ist der Beginn des Produkts. Wenn es einmal etabliert ist und das Geld für die richtige Weiterentwicklung da wäre, ist es meist schon so verworren und eingefahren, dass das Ablösen nicht mehr wirklich möglich ist. Was bleibt ist ein Wirrwarr aus abertausend Zeilen Code, welcher sofort anfängt zu bröckeln, wenn auch nur eine Kleinigkeit verändert wird. Aber das ist nicht so wichtig. Scriptkiddies sind günstig. Sie machen das Problem zwar nicht besser, aber es funktioniert.

Bis zu einem gewissen Punkt…

Irgendwann ist das ganze System dann aber so verworren, dass sich der Spaghetticode bemerkbar macht. Plötzlich werden die einfachsten Dinge zum Riesenproblem. Microsoft spürt das zum Beispiel aktuell sehr gut. Es geht bergab, weil man einfach nicht mehr so flexibel ist wie die Konkurrenz. Bill Gates dürfte das mittlerweile aber relativ egal sein.

Bildquelle: IcyApril - Refactoring Legacy PHP

Fazit

Ja, was ist das Fazit? Ist das Fazit, dass man als Entwickler keinen Wert auf guten Code legen sollte, wenn man Erfolg haben möchte? Ist das Fazit, dass sich etwas grundlegendes an der Art wie wir Software entwickeln ändern muss? Ich weiß es nicht. Ich wüsste es gerne. Aber vielleicht habe ich ja den ein oder anderen zum Denken angeregt. Wenn du ein gutes Fazit oder eine Meinung hast, dann lass es mich wissen.