Kennen Sie den Unterschied zwischen Hardware und Software? Diesen genau zu formulieren, ist gar nicht so einfach. Hardware ist etwas Greifbares, etwas Reales. Sie hat Form, Farbe und Gewicht, existiert als physikalisch abgrenzbare Einheit und folgt den gängigen Naturgesetzen. Mit Software verhält es sich anders.
Sie existiert nicht physisch, nur imaginär. Obwohl oft Vergleiche mit der Hardwarewelt, allen voran mit Fahrzeugen und Gebäuden, gezogen werden, hat Software weder Farbe, noch Form oder Gewicht und ist nicht den Naturgesetzen unterworfen.
Software kann jederzeit unabhängig von ihrer Beschaffenheit versandt und vervielfältigt werden. Modifikationen werden zeitgleich an mehreren Stellen wirksam. Ihre Bestandteile kann man in nahezu beliebiger Reihenfolge ersetzen und verändern. Versuchen Sie das mal mit Ihrem Haus oder Auto.
Software folgt einem ganz eigenen Regelwerk, das eher mit dem eines organischen Gebildes vergleichbar ist, bspw. mit einem Garten. Einmal realisierte – gepflanzte – Ideen entwickeln sich nicht immer wie geplant. Sie verkümmern oder nehmen unerwartet eine andere Farbe an. Wiederum andere wachsen sich zu unerwartet großen Störenfrieden aus und müssen fachmännisch verschnitten werden. Es kann zu Überraschungen kommen wenn plötzlich Pflanzen auftauchen, die man gar nicht eingeplant hat.
Diese Analogie ist nicht neu, sondern wurde bereits 1999 von Andrew Hunt und David Thomas in "The Pragmatic Programmer: From Journeyman to Master" vorgestellt. Dazu gibt es ein äußerst lesenswertes Interview, in dem die Idee von den Autoren nochmals sehr anschaulich präsentiert wird. Es existiert sogar ein Software Gardening Manifest, dass meiner Meinung nach die Gärtneranalogie dann aber doch etwas zu weit treibt.
Niemand käme auf die Idee, einen Garten bis auf Blatt und Borke zu planen und so wird auch verständlicher, warum das in Softwaresystemen ebenfalls nicht so einfach sein kann. Softwaresysteme leben in gewisser Weise. Sie verändern sich ständig. Auch ohne unser Zutun.
Aus diesen Gründen kann man Software nicht planen wie den Bau eines Hauses oder die Produktion von Maschinen. Es herrschen schlicht andere Bedingungen, es gibt soviel mehr Möglichkeiten und soviel weniger Erfahrung.
Tut man es dennoch, wird man letztendlich entweder scheitern oder ein Übermaß an Ressourcen investieren, um dann doch zu scheitern. Es kann nicht Sinn und Zweck eines teuren und langwierigen Projekts sein, mittelmäßige bis schlechte Ergebnisse zu produzieren und dabei Entwickler wie auch Kunden zu verschleißen.
Tragen Sie also den unbequemen Wahrheiten Rechnung. Richten Sie sich auf wechselnde Anforderungen ein, auf unerwartete Entwicklungen und konstanten Wandel. Seien Sie flexibel ohne übergroße Risikopuffer einzuplanen. Tun Sie was sinnvoll ist, nicht was geplant wurde. Seien Sie agil.
Es muss ja nicht gleich die agile Totalkonvertierung Ihres Unternehmens sein. Bereits die Anwendung einiger kleinerer Werkzeuge aus dem agilen Baukasten, wie z. B. Iterationen, regelmäßige Reviews und die Einbeziehung des Kunden in den Entwicklungsprozess können helfen.
Bevor Ihnen Ihr Softwaregarten also über den Kopf wächst, wenden Sie sich doch vertrauensvoll an uns. Wir lieben Dinge, die wachsen. Wachsen Sie mit?