Inner Loop und Outer Loop
Was ist der Inner Loop?
Im Softwareentwicklungsprozess bezieht sich der „Inner Loop“ auf den Workflow, den Entwickler_innen durchlaufen, wenn sie Code schreiben, testen und debuggen. Es ist ein schneller, iterativer Prozess, der typischerweise auf der Ebene der einzelnen Entwickler_innen stattfindet. Für diese Arbeit benötigen Entwickler_innen eine (lokale) Entwicklungsumgebung.
Was ist der Outer Loop?
Der “Outer Loop” beschreibt Abläufe und Aktivitäten, die nach dem Commit des Codes in das Versionskontrollsystem beginnen:
- Mergen des Codes
- Code Review
- Build
- Tests
- Deployment
Der Outer Loop umfasst üblicherweise eine CI/CD-Pipeline, um den Prozess effizient und automatisiert zu gestalten. Oft werden auch Meetings dem Outer Loop zugerechnet.
Warum ist das wichtig?
Aus einer Produktivitäts- und DevX-Perspektive lässt sich aus diesem einfachen Modell ableiten, dass Störungen und Optimierungen im Inner und Outer Loop die Arbeit und Produktivität von Entwickler_innen direkt beeinflussen.
Beispiel Inner Loop: In der modernen Softwareentwicklung wird meistens lokal entwickelt. Dabei sind unterschiedliche Tools in Verwendung und Abhängigkeiten zu verwalten. Auch die nötigen Hardwareressourcen müssen vorhanden sein, um Projekte reibungslos ausführen zu können. All diese Faktoren können im Tagesgeschäft den Arbeitsablauf stören. Beispielsweise, wenn ein Tool aufgrund eines Updates nicht mehr funktioniert oder viele Ressourcen frisst.
Für die eigentliche Arbeit – Schreiben von Code – bleibt dann weniger Zeit. Brandaktuell ist die Frage, wie sich AI auf den Inner Loop auswirkt. Sind Entwickler_innen damit tatsächlich produktiver?
Es gibt unterschiedliche Lösungen für Probleme im Inner Loop, beispielsweise:
- Standardisierung: Einsatz von Containern, Policies oder Cloud Development Environments.
- Mehr Leistung: Kauf von neuen Laptops.
Beispiel Outer Loop: Hier kann es zu Problemen kommen, wenn die CI/CD-Pipeline einen Konfigurationsfehler hat und nicht mehr funktioniert. In größeren Unternehmen gibt es für solche Probleme typischerweise ein DevOps-Team, das die Infrastruktur und Prozesse überwacht. In kleineren Teams sind aber die einzelnen Entwickler_innen für viele Prozesse selbst verantwortlich. Es kann aber auch sein, dass dauerhaft Meetings angesetzt werden und Entwickler_innen deshalb unfokussiert arbeiten. Die Lösung von komplexen Problemen dauert durch die ständigen Unterbrechungen länger. Das wirkt sich wieder auf die Produktivität aus.