
Agile Coaching Anwendung
Objektorientierte Programmierung (OOP) als Werkzeug im Agile Coaching
Objektorientierte Programmierung ist kein Selbstzweck. In agilen Teams ist OOP ein Mittel, um Änderungen günstig zu halten. Denn genau das ist der Alltag: Anforderungen verschieben sich, Schnittstellen ändern sich, neue Erkenntnisse entstehen im Sprint. Wenn Code dabei “hart” ist, stark gekoppelt, schwer testbar, unübersichtlich, wird jede Anpassung teuer. Teams werden vorsichtig, Releases werden größer, Qualität sinkt, Schuldzuweisungen steigen.
Als Agile Coach schaust du nicht auf OOP als “Technikthema”, sondern als Systemhebel
Klarheit: Kann das Team Code lesen wie eine verständliche Geschichte?
Änderbarkeit: Wie viele Stellen müssen wir anfassen, wenn sich eine Regel ändert?
Zusammenarbeit: Können mehrere Menschen parallel arbeiten, ohne sich dauernd gegenseitig zu blockieren?
Feedback: Wie schnell sehen wir, ob eine Änderung funktioniert (Tests, lokale Builds, CI)?
OOP ist hier eine Form von gemeinsamer Strukturarbeit: Sie macht Abhängigkeiten sichtbar, kapselt Variabilität und ermöglicht kleine, sichere Schritte.
OOP in einem Satz und das gemeinsame Vokabular im Team
OOP bedeutet: Wir organisieren Software als Objekte, die Verantwortung tragen, sie kapseln Daten und Verhalten und sprechen über klare Schnittstellen miteinander. Wichtig ist weniger die Theorie, sondern ein gemeinsames Vokabular
Objekt: eine Instanz mit Zustand (Daten) und Verhalten (Methoden).
Klasse: der Bauplan für Objekte.
Methode: Verhalten, das ein Objekt anbietet.
Schnittstelle / Interface: ein Vertrag, was etwas kann, ohne festzulegen, wie.
Abhängigkeit: wenn A etwas über B wissen oder B aufrufen muss.
Kapselung: Details verstecken, nur Notwendiges nach außen zeigen.
Coaching-Hinweis
Viele Konflikte in Teams starten als Sprachkonflikte (“Service”, “Manager”, “Handler”, was bedeutet das bei uns?). Ein kurzer Workshop, der Begriffe klärt, ist oft der schnellste Gewinn.
Die vier Grundpfeiler – Die Prinzipien
Kapselung (Encapsulation)
Idee: Ein Objekt schützt seinen Zustand. Andere dürfen ihn nicht beliebig verändern, sondern nur über sinnvolle Operationen.
Nutzen im agilen Alltag: Änderungen bleiben lokal: Regeln ändern sich, aber nur in einer klaren Stelle. Nebenwirkungen sinken: weniger “wer hat hier was kaputt gemacht?”
Anti-Pattern: “öffentliche Felder” oder überall Setter, wodurch jedes Objekt von außen verbogen werden kann.
Coach-Intervention (Leitfrage): “Welche Regeln sollen immer gelten, und wo wird das im Code erzwungen?”
Abstraktion (Abstraction)
Idee: Wir zeigen nur das Wesentliche, Details bleiben intern. Abstraktion ist das Weglassen von Unwichtigem.
Nutzen: Teams denken in Domänenbegriffen statt in Technikdetails. Die Komplexität wird handhabbar.
Anti-Pattern: “Abstraktion um der Abstraktion willen” (drei Schichten Interfaces ohne echten Wechselbedarf).
Coach-Intervention: “Welche Variation erwarten wir realistisch in den nächsten 2–3 Sprints?”
Vererbung (Inheritance)
Idee: Eine Klasse übernimmt Verhalten und Struktur einer anderen (“ist-ein”).
Nutzen: Kann Wiederverwendung und Polymorphie ermöglichen.
Risiken (häufig!): Starre Hierarchien, die Änderungen erschweren. Vererbung wird als “Code-Duplizierung vermeiden” missbraucht
Coach-Intervention: “Ist das wirklich ein ist-ein – oder eher ein hat-ein?” Oft ist Komposition besser: Dinge werden zusammengebaut statt abgeleitet.
Polymorphie (Polymorphism)
Idee: Unterschiedliche Implementierungen können über denselben Vertrag genutzt werden.
Nutzen: Austauschbarkeit (z. B. Zahlungsarten, Versandarten). Testbarkeit (Fake-Implementierungen). Entkopplung (Teams können unabhängig arbeiten).
Coach-Intervention: “Wo brauchen wir bewusst Variabilität – und wie machen wir sie austauschbar?
Von Features zu Objekten: Domäne, Verantwortlichkeiten, Grenzen
Agile Teams starten mit User Stories. OOP hilft, aus diesen Stories ein stabiles Modell abzuleiten.
Mini-Heuristik*: “Wörter finden”
Nimm eine User Story: “Als Kund:in möchte ich meine Bestellung bezahlen, damit sie versendet werden kann.”
Markiere Substantive und Verben: Substantive: Bestellung, Zahlung, Versand
Verben: bezahlen, versenden
Das sind Kandidaten für Objekte/Verantwortlichkeiten.
Verantwortlichkeiten statt Klassen-Sammelsurium
“Eine Klasse ist dann gut, wenn du in einem Satz sagen kannst, wofür sie verantwortlich ist.”
Beispiele:
Order ist verantwortlich für den Lebenszyklus einer Bestellung.
Payment ist verantwortlich für Zahlungszustand und Zahlungsreferenzen.
PaymentService (vorsichtig!) ist verantwortlich für die Koordination mit externen Zahlungsanbietern.
Warnsignal: Wenn jemand sagt: “Die Klasse macht alles rund um Bestellungen.” → zu groß.
Hohe Kohäsion, niedrige Kopplung
Kohäsion: Dinge, die zusammengehören, sind zusammen.
Kopplung: wie stark Komponenten voneinander abhängen.
Agiles Ziel: Kleine Änderungen, kleine Blastradius.
Coach-Fragen: “Wenn sich die Versandregel ändert – welche Dateien müssen wir anfassen?”
“Können zwei Leute parallel arbeiten, ohne Merge-Konflikte und Seiteneffekte?”
Prinzipien, die Coach wirklich helfen (ohne Dogma)
Single Responsibility (SRP) als Brücke zu slicing
SRP heißt nicht “eine Methode pro Klasse”. Es heißt: Eine Klasse hat einen klaren Grund, sich zu ändern.
In agilen Teams ist das Gold wert, weil es Story-Slicing unterstützt:
Eine Story ändert eine Geschäftsregel → idealerweise betrifft das wenige Klassen.
Symptom bei SRP-Verletzung: Eine Story zieht lange Ketten an Änderungen nach sich.
