Festina Lente Software-Entwicklung

Posted by Festina Lente on Tue 30 July 2019

Festina Lente ist der Leitspruch zahlreicher erfolgreicher und bekannter Persönlichkeiten u. Familien der letzten Jahrhunderte.

Auch in der Software-Entwicklung kann diese Einstellung helfen, qualitativ hochwertigere Ergebnisse zu erzielen.

Architektur

Eine gute Software-Architektur erkennt man bereits an der Art und Weise, wie sie entsteht und wie sie gepflegt wird. Eine gute Software-Architektur ist jene, bei der Entscheidungen möglichst spät getroffen werden können. Das klingt sehr banal, ist aber in der Praxis nur schwer zu erreichen.

Warum? Weil sich das Ziel auf dem Weg ändert (wir lernen dazu, auf die Aufgabenstellung bezogen und auf den Lösungsweg bezogen). Entscheidungen, die kurzfristig gut erscheinen, können sich mittel- u. langfristig rächen. Populäre Entscheidungen müssen den nachhaltigen Entscheidungen untergeordnet werden.

Entwicklungsprozess

Die richtige Geschwindigkeit zur richtigen Zeit ist entscheidend für Fortschritt und Qualität von Projekten und Produkten. Die richtigen Prioritäten in der Entwicklung der Architektur ebenfalls.

Agile Software-Entwicklung fokusiert sich auf den Endnutzen einer Entwicklung. Lieber kleiner Fortschritte in kürzerer Zeit, als mehr Fortschritt in großen Intervallen. Warum? Auch wieder, um schneller zu lernen und Fehler besser früher als später zu machen und zu korrigieren.

Dass eine gute Software-Architektur dabei als Abfallprodukt entsteht, wird oft angenommen, aber auch intensiv diskutiert.

Ich bin der Überzeugung, dass gute Software-Architektur nicht von alleine ensteht, es muß ein entsprechender Fokus (neben der eigentlichen Funktionalität) darauf gelegt werden. D.h in frühen Phasen eines Projektes/einer Entwicklung müssen Architektur-Ziele höher bewertet werden. Wichtig, es geht dabei nicht um frühe Entscheidungen sondern um möglichst großen Entscheidungsspielraum für später zu schaffen.

Festina Lente Entwicklungsaspekte

Auf welche Aspekte ist daher in einer "Festina Lente"-Entwicklung der Fokus zu legen

  1. Modellierung des Aufgabenbereiches: Begriffe, Eigenschaften, Beziehungen, Abläufe u. Prozesse

  2. Komponenten zur Strukturierung des Aufgaben-/Lösungs-Raumes (Service)

  3. Nachvollziehbarkeit um den Lerneffekt zu beschleunigen/zu optimieren (Logging, Metriken, Diagnose)

  4. Änderungsprozess um den Lerneffekt zu unterstützen und Das Richtige zu entwickeln (Dokumentation, Änderungsmanagement, Continuous Delivery)

  5. Qualitätssicherung um Das Richtige richtig zu entwickeln (Prozessschritte, Reviews, Teamfeedback, div. Tests)

Diese Aspekte sollen in Zukunft auf dieser Website näher betrachtet werden, denn

"Hast produziert schlechte Qualität"

tags: AWS, Python, Pelican