Seit ein paar Wochen beschäftige ich mich intensiv mit ASP und C# von Microsoft. In meiner Karriere als „Software-Projekt-Mensch“ habe ich bereits viele Projekte mit PHP und Java umgesetzt. Mir ist früher schon aufgefallen, dass der Overhead beim Entwickeln in einer Entwicklungsumgebung wie Visual Studio oder Eclipse wesentlich größer ist, als wenn ich schnell ein paar PHP Skripte mit Notepad++ in einem LAMP Stack hacke.
Dieses mal habe ich aber mal einen gut vergleichbaren Fall, da ich ein Web System mit PHP bereits vollständig gebastelt hatte und jetzt lediglich das Gleiche in ASP/C# umsetzen muss. In meinem jugendlichen Leichtsinn, dachte ich im ersten Moment dass es nicht lange dauern kann. Hab ja schon die gesamte Logik und muss das ja nur schnell mal von PHP nach C# „übersetzen“. Diese Meinung war vor allem geprägt davon, dass ich die Businesslogik innerhalb des Web System mit XML und XLST erledigt hatte. D.h. ich muss nur die gleichen XML Daten generieren und mit den gleichen Stylesheets transformieren. Ganz klar ging ich davon aus, dass 90% der gesamten Logik in allgemeingültiger Form bereits vorhanden sind. Dazu kommt, dass ich die Kommunikation mit dem Backend mit JQuery und Javascript erstellt und das komplette Layout war in HTML mit CSS3 gesetzt. Hier und da hab ich noch ein JQuery Plugin verwendet. So what! Ich muss ja nur ein bisschen das XSLT und die AJAX Verbindungen auf der Serverseite umbiegen.
Also erstmal Kaffee gekocht und die ersten vier Stunden gingen dafür drauf Visual Studio runterzuladen, Updates und Servicepacks zu installieren. Danach dann lizenzieren, Umgebung konfigurieren und die ersten paar Code-Schritte zu testen. Hierbei ist mir bereits klargeworden, dass es wesentlich länger dauert, wenn ich etwas codiere und mir das Ergebnis im Browser anzuschauen. Bei jedem Klick auf den Play-Button im Visual Studio, wird immer erst Codestruktur geprüft, kompiliert und im Lokalen Webserver deployed. Das dauert etwa 3-4 Sekunden bis überhaupt das Ergebnis im Browser anfängt zu laden. Übrigens, bei Java Projekten in Eclipse dauert das auch so lange bis man irgendwas im Browser überhaupt sehen kann.
Die gleichen Aktivitäten im LAMP Stack, kostet überhaupt keine Zeit. Klar, der Code wird nicht überprüft oder kompiliert. Das Deployment in den Webserver fällt bei mir auch weg, da ich bei PHP immer im Root Verzeichnis meiner Webseite entwickele. Der Vergleich klingt jetzt etwas merkwürdige, da ich im Grunde technologisch Äpfel mit Birnen vergleiche. Lasst mal das Technische weg und seht es mal rein vom Blickwinkel der Zeit die für das Entwickeln drauf geht. Da kommen im Laufe von ein paar Sprints schnell ein paar Minuten zusammen wo man nur auf das Ergebnis wartet. Und aus Minuten werden irgendwann auch Stunden…
Zeit ist ja ein entscheidender Faktor bei der kommerziellen Softwareentwicklung, da alles letztendlich unter finanziellen Gesichtspunkten entschieden wird. Hierbei sind die Aufwandsschätzungen der Entwickler ein wichtiger Faktor. Nur wenn gut und realitätsnah geschätzt wird, haben Projekte überhaupt eine Chance im finanziell „Grünen-Bereich“ zu kommen. Zum Thema Aufwandsschätzungen habe ich bereits ein paar Artikel verfasst, schaut einfach mal nach Planning Poker in agilen Entwicklungsprojekten mit SCRUM oder Der agile Festpreis. Dort habe ich jeweils die Aspekte für Zeit und Geld bereits genauer betrachtet.
Neben der Zeit die für das Warten auf das Ergebnis drauf geht, bin ich auch erstaunt wie viel Platz auf den Festplatten für die Projekte drauf geht. Im oben genannten PHP Projekt, hab ich mit allen Frameworks, Bilddaten und Plugins keine 800 Kilobytes auf der Festplatte des Webserers im Beschlag. Das vergleichbare C# Projekt hat etwa 2 Megabytes konsumiert. Nur noch mal zur Erinnerung, in beiden Webseiten stecken die gleichen XSLT, Bilddaten und Javascript Framework drinnen! Das C# Ergebnis ist fast 2,5 mal größer als das vergleichbare PHP Projekt mit dem gleichen Leistungsumfang.
Der verbrauchte Plattenplatz ist heute längst nicht mehr so kostenintensiv wie früher, trotzdem ist es ein Faktor in der ökonomischen Betrachtung. In Summe kann ich keine Vergleichsmatrix aufbauen, hierbei gehen Einsatzgebiete von C#, PHP und Java zu weit auseinander. Obendrein hab ich weder die Zeit oder den Platzkonsum der einzelnen Entwicklungsumgebungen vergleichbar gemacht. Wichtig an diesem Artikel ist, dass die genutzte Technologie nicht nur Auswirkungen auf die Funktionsweise eines Produktes hat, sondern auch direkte Auswirkung auf die Kommerziellen Aspekte. Allein durch die Nutzung der unumgänglichen Entwicklungsumgebungen, ist der Aufwand für C# oder Java Entwicklung immer größer als in einer Entwicklungsumgebung „weniger-abhängigen“ Sprache wie PHP. Man kann PHP Entwicklungsumgebungen nutzen, muss es aber nicht wenn man es nicht will. Diese Option gibt es nicht für C# oder Java.
Ich werde für mich in Zukunft die vorgenannten Faktoren stärker in Betracht ziehen, wenn ich nach Aufwand für die Umsetzung befragt werde.