Grüne Wiesen mit Samen und Dünger
Wenn man auf der grünen Wiese beginnt, dann fängt man in der Regel von ganze vorne an und meist auch ohne Ahnung davon zu haben. Man hat eine riesige Fläche zur Verfügung. Man kann pflanzen was man will, Wege anlegen wie man will usw..
In der (Software-)Entwicklung verhält es sich ähnlich. Man steht vor einer schier endlosen Auswahl von Technologien, Frameworks und Möglichkeiten. Daraus wählt man nun, meist anhand bestehender Anforderungen (was einem gerade so eingefallen ist), persönlicher Vorlieben, schöner Beschreibungen und umfangreicher Featurelisten.
Was folgt ist vielleicht ein schöner Garten oder ein erfolgreiches Projekt. Es gedeiht und die Rechnung geht so ungefähr auf.
Doch leider folgt auch oft ein mehr oder weniger schwer unter Kontrolle zu kriegender Wildwuchs. Man hat den Garten halt angelegt, ohne wirklich Ahnung gehabt zu haben, man hat schön gepflanzt und gegossen, mal hier mal dort. Man hat eine Software geschrieben, deren Komponenten wunderbar mit einander verzahnt sind, neue, vollkommen andere Anforderungen sind entstanden, an die man selbst nie gedacht hat (aber die späteren Anwender schon). Man hat es dann halt so rein gebastelt. Das könnte man jetzt den Garten Eden nennen oder einfach Version 1.0.
Das geht dann meist auch noch eine ganze Weile gut. Mit einigen Aufwand kann man das Unkraut fern halten und die Software an an neue Anforderungen anpassen. Dann entsteht sowas wie der Garten Eden 1.1, 1.2 ….
Aber hoffentlich nie die Version 2.0.
Version 2.0 ist aus meiner Sicht die Chance vieles ordentlich zu machen. Eben nochmal auf der grünen Wiese zu beginnen, aber diesmal hat man schon vernünftiges Werkzeug, Samen, Dünger, Helfer und vor allem Erfahrung und genaue Vorstellungen dabei.
In der Softwareentwicklung ist es doch wieder genauso? Das Produkt ist gereift, es ist einiges an Zeit vergangen, vielleicht 1, 2 oder 3 Jahre. Gleichzeitig ist das Produkt verkorkst, alles wurde irgendwie integriert, Hauptsache es geht, alles ist irgendwie Legacy und muss weiter gepflegt werden. Ich glaube viele wissen was ich meine.
Startet man von vorne, hin zu einer echten 2.0 kann es doch nur besser werden?
- Man hat ein in sich abgeschlossenes Produkt, d.h. ein Produkt, bei dem es immer schwieriger wird neue Anforderungen umzusetzen. Selbst vermeintlich einfache Sachen könnten zur Tortur werden (Mehrsprachigkeit, Login mit Facebook). Man hat alles irgendwie reingebastelt, irgendwie verzahnt (Refactoring steht auf der Streichliste wahrscheinlich gleich hinter Test ;).
- Man hat eine vermutlich riesige Liste von Anforderungen im Vergleich zum ersten Prototypen. Damit lässt sich viel einfacher arbeiten. Anforderungen wie Erweiterbarkeit, automatische Aktualisierung, Verteilung, Integration waren zum Start von Version 1.0 möglicherweise gar nicht abzusehen, weshalb man auch nicht in diese Richtung entwickelt hat. Jetzt weiß man es aber.
- Man hat ein Team, welches die bestehende Software kennt, die Vorgehensweise (den Prozess) kennt, aufeinander eingestimmt ist. Man wird zur Erreichung des gleichen Funktionsumfangs also gar nicht mehr solange brauchen.
- Man hat Erfahrung. Das ist vermutlich der wichtigste Punkt. Version 1.0 entstehen vermutlich zum größten Teil von Greenhorns. Leuten frisch aus der Ausbildung, mit Ideen, Motivation, aber eben auch ohne jede Erfahrung. Da wird eben gewählt was gefällt. Die Zeit ist jetzt vorbei. Es wurde bei Version 1.0 viel über das Grundlegende gelernt. Worauf muss ich beim Gartenbau achten? Welche Pflanzen ergänzen sich in einem Beet? Will ich meine Software auf mehrere Server verteilen? Soll meine Software mehr als eine Sprache unterstützen?
- Entschlackung. Altlasten loswerden. Endlich mal ohne schlechtes Gewissen etwas entfernen dürfen (Da kann ich sehr dieses Buch empfehlen).
- Bestimmt noch vieles andere.
Jetzt bleibt nur noch zu klären, wo dran es meistens scheitert.
No comments yet.