Warum Darwin ein idealer Softwareentwickler gewesen wäre

[caption id="attachment_20275" align="alignleft" width="240" caption="Charles Darwin im Alter von 71 Jahren (Lizenz: gemeinfrei)"][/caption]„Es ist wie einen Mord zu gestehen“, schrieb Darwin in einem Brief, als er langsam zu der Überzeugung kam: Arten sind nicht unveränderlich.

Das war 1844, eineinhalb Jahrzehnte vor der Veröffentlichung seines Hauptwerks Die Entstehung der Arten. Er war dabei, mit seinen Beiträgen zur Evolutionstheorie alles auf den Kopf zu stellen.

Heute erscheint die These weit weniger radikal als noch bei der Veröffentlichung: Arten verändern sich, um sich besser an die Umwelt anzupassen.

Dabei bleiben vorteilhafte Variationen erhalten.

Evolution in der Softwareentwicklung

Genau diese Grundannahmen der Evolution machen sich Softwareentwickler heute zunutze.

Bei der evolutionären Entwicklung wird zunächst nur eine Anwendung mit den Grundfunktionalitäten bereitgestellt. Dann wird nach und nach erweitert — entsprechend des Feedbacks vom Kunden.

Natürlich ist dabei der Entwickler die treibende Kraft, im Gegensatz zu Darwins natürlicher Selektion. Software entwickelt sich nicht von allein weiter.

Deshalb ist auch das Prinzip des Gradualismus, also Änderungen in vielen Zwischenschritten, nicht gegeben. Es ist aber Voraussetzung für eine erfolgreiche Evolution des Systems und sollte Ziel der Weiterentwicklung sein.

Paradebeispiel Open Source Software

Open Source Software wird ja praktisch nur evolutionär entwickelt.

Linus Torvalds hat sich vor 20 Jahren nicht hingesetzt und geplant, Linux in einem guten Jahrzehnt auf den Großteil der Server zu bringen und es zu einer wirtschaftlichen Größe zu etablieren.

Typischerweise entstehen ja Open-Source-Projekte so, dass jemand ein ganz spezielles Problem für sich selbst löst. Mit ein bisschen Glück findet man Mitstreiter, die neue Funktionalität dazu- oder vorhandene entsprechend ihrer eigenen Wünsche umbauen.

Die Software evolviert über die Zeit.

Gern wird auch mal zu drastischen Mitteln gegriffen, um ein Projekt voranzutreiben. Aus der durchaus lesenswerten Erklärung, warum einige Entwickler aus der Community um das Projektmanagement-Tool Redmine es für sinnvoll erachteten, das ChiliProject abzuspalten:

However, in the view of some of Redmine's leading developers, the maintenance and evolution of Redmine has not been as predictable and responsive as its developer community is capable of […] A group of developers from the Redmine community has therefore concluded that the only way to ensure continued, sustained and stable development of our favorite project management solution is to fork it.

In Darwins Augen ist hier also eine neue Art entstanden.

Flexibilität und Wartbarkeit sichern: Evolution statt Sackgasse

Um evolutionäre Entwicklung zu fördern und Software später an veränderte Bedingungen anpassen zu können, müssen Programme flexibel gehalten werden. Sonst drohen irgendwann teure Neuentwicklungen.

Das schafft man nur, wenn regelmäßig aufgeräumt und dem Verfall rechtzeitig vorgebeugt wird.

Dann ist man auch in der Lage, agil zu entwickeln.

Vorbei die Zeit, in der Softwareprodukte in jahrelangen Prozessen am Kunden vorbei spezifiziert und umgesetzt wurden. Die Vorstellung, heute schon wissen zu können, welche Detailfunktion der Kunde in ein paar Jahren braucht, muss einem da zwangsläufig wie Schöpfungsbiologie vorkommen.

Zusammenfassung

Darwin zögerte damals, die Theorie zu veröffentlichen. Seine ursprüngliche Auffassung war die Unveränderlichkeit der Arten gewesen, aber seine und die Recherchen anderer widerlegten die These. Und er war sich der Tragweite seiner Entdeckungen bewusst.

Sein Hauptwerk schloss er mit dem Satz:

Es ist wahrlich etwas Erhabenes um die Auffassung, [dass] aus einem so schlichten Anfang eine unendliche Zahl der schönsten und wunderbarsten Formen entstand und noch weiter entsteht.

Diese Feststellung lässt sich so sogar auf Software übertragen.

Hast du schon Erfahrung mit evolutionärer Entwicklung gesammelt? Sag's uns in den Kommentaren!

Aktualisiert: