Neulich saß ich mal wieder in einem Meeting, wo es dem Vernehmen nach um CI/CD ging. Ging es – wie meist – nicht. Und das ist völlig okay. Alle wissen meist worum es grob geht und das ist oft genug. Dass alle dauernd von CI/CD sprechen, auch wenn sie sich damit gar nicht befassen, hat wie so oft, mit Marketing zu tun. Es ist eine coole Catch-Phrase geworden. Eine kleine Einordnung:
Was tatsächlich meist gemeint ist, wenn von CI/CD die Rede ist, sind diverse Technologien, Prozesse und Herangehensweisen, die im Rahmen von CI/CD entwickelt wurden. Und diese Technologien, Prozesse und Herangehensweisen sind gut und meist vorteilhaft. Sie sind nur kein CI/CD.
Das moderne Antiblockier-Bremssystem in PKW wurde zuerst für einen Rennwagen entwickelt. Wenn ich jetzt in meine Familienkutsche mit ABS steige und sage: “Ich gehe jetzt Rennfahren”, das ist ganz ähnlich, wie die Rede von CI/CD bei den meisten Teams. Dabei ist ABS super, sollte jedes Auto haben – so wie auch die allermeisten Teams die besagten Technologien usw. nutzen sollten!
Die Cs in “CI/CD” stehen für das C in “continuous”, zu Deutsch “kontinuierlich”. Also ständig, immer, dauernd. “CI/CD” heißt man integriert jede kleine Code-Änderung sofort (das heißt alle Entwickler arbeiten auf dem gleichen Code, es gibt keine “Branches”, oder nur extrem kurzlebige) und liefert sie sofort an Nutzer aus. Dafür braucht es mehr als die üblicher Weise verwendeten Rosinen aus dem CI/CD Umfeld. Es braucht z.B. “Feature Toggles”, damit man “unfertigen” Code ausliefern kann, ohne ihn gleich scharf zu schalten. Es braucht aber auch Disziplin, Kommunikation, Verantwortung und mehr.
Diverse sehr produktive Teams in oft großen Unternehmen arbeiten so und weil die damit so produktiv sind, hat das Marketing den Begriff zu einem Liebling erklärt. Aber so müssen – und können – nicht alle arbeiten. Trotzdem ist es auch für Teams, die (noch?) nicht so arbeiten, sehr sinnvoll, sich bestimmte Dinge aus dem CI/CD Umfeld abzuschauen. Dabei geht es hauptsächlich darum, viele Schritte vom Entwicklungsrechner zum Nutzer zu automatisieren – Schritte wie Bau, Qualitätssicherung und Auslieferung der Software.
Es macht immer noch einen riesigen Unterschied, ob die Entwickler dann die Knöpfe dieser Automatisierung mehrmals täglich drücken, oder nicht – ein Unterschied mit grundsätzlichen Konsequenzen für Arbeitsweise, Arbeitsergebnis … und Produktivität.
Ein treffenderer Begriff wäre Software Lebenszyklus Automatisierung oder Software Lifecycle Automation statt CI/CD. Wir werden natürlich trotzdem alle weiter von CI/CD reden, was völlig okay ist. Und jetzt wissen wir ja sogar wovon wir reden 😉