Der wahre Startpunkt der Softwareauslieferung ist nicht der Code
Jedes Deployment, das du je durchgeführt hast, begann irgendwo. Aber dieses Irgendwo ist kein Pull-Request, kein Branch und keine einzige Zeile Code. Es begann früher – oft in einem Gespräch, das niemand für aufschreibenswert hielt.
Stell dir vor: Ein Benutzer meldet, dass der Speichern-Button nicht funktioniert. Oder ein Team-Meeting endet mit dem Satz „Wir sollten Benachrichtigungen einbauen.“ Oder ein Error-Log zeigt, dass die Datenbank ständig die Verbindungslimits erreicht. Diese Momente sind die eigentlichen Startpunkte der Softwareauslieferung. Bevor es Code gibt, bevor eine Pipeline läuft, muss jemand entscheiden: Welche Idee wird umgesetzt, und welche wird verschoben oder ganz verworfen?
Die informelle Falle
In kleinen Teams fühlt sich dieser Entscheidungsprozess natürlich an. Jemand hat eine Idee, spricht mit einem Kollegen und fängt an zu coden. Es wirkt schnell und effizient. Aber diese Geschwindigkeit hat versteckte Kosten.
Eine Idee, die nicht durchdacht wurde, wird zu Code, der Zeit verschwendet. Zwei Personen könnten dasselbe Feature bauen, ohne voneinander zu wissen. Eine gute Idee geht verloren, weil niemand sie aufgeschrieben hat. Das Team liefert Code aus, aber der Code löst nicht das eigentliche Problem.
Ich habe Teams erlebt, die wochenlang an einem Feature gearbeitet haben, das niemand angefordert hatte – einfach weil die ursprüngliche Idee vage war und niemand sie vor dem Coden hinterfragt hat. Der Code funktionierte. Die Tests bestanden. Aber das Feature blieb ungenutzt, weil es nicht dem entsprach, was die Benutzer wirklich brauchten.
Von Ideen zu nachverfolgbarer Arbeit
Wenn Teams wachsen und Produkte ernster werden, reichen informelle Gespräche nicht mehr aus. Du brauchst ein System, um Ideen zu erfassen, zu diskutieren und zu priorisieren, bevor sie zu Code werden.
Die meisten Teams verwenden eine Form von Issue-Tracking: Jira, Trello, GitHub Issues, Linear oder auch nur ein gemeinsames Dokument. Jede Idee wird zu einem Ticket mit einer Beschreibung, was getan werden muss, warum es wichtig ist und manchmal auch, wie man es angehen sollte. Das Team diskutiert dann: Ist das wichtig? Ist es dringend? Können wir das mit dem umsetzen, was wir gerade haben?
Diese Diskussion ist wichtig, weil dein Team nur begrenzt Zeit und Energie hat. Nicht jede Idee kann umgesetzt werden. Du musst auswählen. Die Entscheidung kann auf geschäftlicher Priorität, technischer Dringlichkeit oder der Verfügbarkeit von Teammitgliedern basieren.
Manche Teams nutzen Sprint-Planning-Meetings, um zu entscheiden, welche Tickets in den nächsten Arbeitszyklus kommen. Andere setzen auf asynchrones Voting im Chat oder regelmäßige Backlog-Grooming-Sessions. Das Format ist weniger wichtig als die Gewohnheit, Entscheidungen explizit zu machen, bevor jemand Code schreibt.
Die versteckte Arbeit vor dem Code
Hier ist, was leicht übersehen wird: In dieser Phase existiert noch kein Code. Was existiert, sind Notizen, Diskussionen und Entscheidungen. Aber hier beginnt die eigentliche Auslieferungsreise. Das Ticket, das priorisiert wird, wird zum Input für den nächsten Schritt: Code schreiben.
Viele Entwickler und Manager denken, die Auslieferung beginne, wenn jemand einen Editor öffnet und anfängt zu tippen. Das stimmt nicht. Vor dem ersten Tastendruck gibt es bereits eine Kette von Entscheidungen, die bestimmt haben, ob der Code überhaupt geschrieben werden sollte, was er tun soll und wie man ihn angeht.
Teams, die diese Phase überspringen, landen oft bei Code, der nicht genutzt wird, Features, die am Ziel vorbeigehen, oder Nacharbeiten, die Zeit und Moral kosten. Der Code kann technisch exzellent sein. Aber wenn er das falsche Problem löst, ist technische Exzellenz egal.
Warum das für deine Pipeline wichtig ist
Du denkst vielleicht: „Das klingt nach Projektmanagement, nicht nach CI/CD.“ Aber hier ist der Zusammenhang.
Deine Auslieferungs-Pipeline soll eine Idee nehmen und sie sicher und schnell in laufende Software verwandeln. Wenn die Idee selbst schlecht definiert ist, wird deine Pipeline zu einer Maschine, die schlechte Ideen schneller ausliefert. Eine schnelle Pipeline hilft nicht, wenn du das Falsche auslieferst.
Deshalb investieren reife Teams in die Phase vor dem Code. Sie stellen sicher, dass die Idee klar ist, die Priorität gesetzt ist und das erwartete Ergebnis definiert ist. Dann lassen sie die Pipeline ihre Arbeit machen: diese klar definierte Änderung effizient auszuliefern.
Eine praktische Pre-Code-Checkliste
Bevor jemand Code für das nächste Feature oder den nächsten Fix schreibt, geht diese Fragen durch:
- Welches Problem löst das? Kannst du es in einem Satz beschreiben, ohne Fachjargon zu verwenden?
- Wer profitiert davon? Benutzer, interne Teams oder nur die Bequemlichkeit des Engineering-Teams?
- Was passiert, wenn wir das nicht bauen? Wenn die Antwort „nichts Schlimmes“ ist, überdenke die Priorität.
- Gibt es einen einfacheren Weg, die Idee zu testen? Kannst du mit einem manuellen Prozess, einem Feature-Flag oder einem Prototyp validieren, bevor du dich auf einen vollständigen Build festlegst?
- Wer muss von dieser Änderung wissen? Support, Dokumentation, QA, Operations oder andere Teams, die betroffen sein könnten.
Diese Checkliste dauert fünf Minuten. Sie kann Wochen verschwendeter Arbeit ersparen.
Das Fazit
Code ist nicht der Startpunkt der Auslieferung. Ideen sind es. Die Qualität deiner Auslieferung hängt nicht nur davon ab, wie schnell du Code ausliefern kannst, sondern auch davon, wie gut du entscheidest, welchen Code du überhaupt schreibst.
Bevor du deine Pipeline optimierst, optimiere deinen Ideen-zu-Entscheidung-Prozess. Eine schnelle Pipeline, die das Falsche ausliefert, ist nur ein schnellerer Weg, Zeit zu verschwenden. Hol dir zuerst die Idee richtig, dann lass deine Pipeline das tun, was sie am besten kann: diese richtige Idee sicher und wiederholt ausliefern.