Produkt oder Code?

Von Karim Geiger — unter Development am 04.12.2016

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.

Android Development

Von Karim Geiger — unter Android am 14.09.2014

Cover

Ich habe in der Vergangenheit ja schon viel Dampf über Android abgelassen. Aber da man ohne das System nicht leben kann und die neuen Android Wear Smartwatches wirklich nicht schlecht sind (vor allem, wenn man sie mal mit der Apple Watch vergleicht), wollte ich mir ein Watch Face bauen. Das ist eine Art Theme für das “Ziffernblatt” der Uhr. Da für diese Watch Faces die neuste Version des SDKs benötigt wird, starte ich also meine Eclipse IDE mit ADT-Plugin, öffne den Android SDK Manager und ziehe die letzte Version des Android Wear SDKs auf meine Festplatte. Nach einem Neustart der Eclipse IDE werde ich mit der freundlichen Meldung begrüßt, dass ich doch den SDK Manager auf Version 23 aktualisieren solle, da Version 22 nicht mehr unterstützt wird. Netterweise kann ich mit einem Klick auch direkt nach Updates suchen. Problem nur: Version 22 ist aktuell.

Da ich wenig Lust habe mehr Zeit in die IDE zu investieren als in die Entwicklung des (nahezu nicht von Google dokumentierten) Watch Faces, lade ich mir die offizielle Android Studio IDE herunter und starte sie. Und direkt werde ich mit der Meldung “es ist ein Update für Android Studio verfügbar” begrüßt. Link zum Update? Nö.

Da ich die neuste Version bereits von der offiziellen Seite heruntergeladen habe, ignoriere ich die Meldung und erstelle mein neues Projekt, wobei mir der freundliche Wizard hilft. Ich wähle “Android Wear”, gebe den Namen ein und drücke auf “Weiter”. Android Studio fängt fleißig an zu rödeln und lädt die letzten Dateien aus dem Netz. Nachdem das Programm fertig ist und mir den Code-Editor präsentiert, bekomme ich direkt einen Haufen Fehlermeldungen auf den Bildschirm geschmissen:

Screen Shot 2014-09-14 at 21.14.23

Keine Ahnung, warum ich immer in jeden Fehler tappe, den eine Software nur haben kann, aber es nervt mich. Das macht doch alles keinen Spaß. Morgen fang ich die Umschulung zum Gärtner an.