1
 
 
Profil
In deinem persönlichen Profilbereich kannst du den Status deiner Bewerbung einsehen, unvollständige Bewerbungen zwischenspeichern und aktuelle News und Events einsehen

Worum geht es in dem Artikel?

Dieser Artikel zeigt, wie Mob-Programming ("kollektive" Programmierung) dabei helfen kann, ein neues Team zu formen, und wie durch diesen kooperativen Arbeitsansatz schnell großartige Ergebnisse erzielt werden können.

Wie es begann

Am 01.08.2021 starteten wir unser neues Team mit der Aufgabe, den gesamten Prozess rund um die Abwicklung von Streckenbestellungen neu zu gestalten. Unser Ziel war es, neue Bestellungen aus dem OTTO-Marktplatz für das Streckengeschäft direkt vom Lieferanten an den Kunden weiterzuleiten, anstatt sie über OTTO-Lager zu leiten. Gleichzeitig sollten uns die Lieferanten mit Kerndaten wie Tracking-Informationen etc. versorgen. Da wir auf dieser Reise nicht allein waren und Teil eines größeren Prozesses sein sollten, entschieden wir uns dafür, dies in einer Reihe kleinerer Schritte zu tun, beginnend mit einem MVP.


Als sich das neue Team zu formieren begann und die ersten Mitglieder hinzukamen, traten die ersten Herausforderungen auf. Anstatt alle auf sich allein gestellt zu lassen und ihnen eigene Geschichten zu geben (wir leben und atmen Agile), beschlossen wir, diese "Mob-Sache" auszuprobieren. Da ich in meinem vorherigen Team bereits (einige) Erfahrungen mit "starken" Mob-Sitzungen gemacht hatte, war es mein Ziel, unsere Leute davon zu überzeugen, dies auszuprobieren. Leichter gesagt als getan, denn wir waren alle neu in diesem Team und kannten uns noch nicht. Also haben wir eine gemeinsame Basis geschaffen und es einfach getan! #einfachmalmachen #justdoit.

Unser Modus Operandi

Unser Team bestand aus vier Personen. Wir arbeiteten agil zusammen, das heißt, alle zwei Wochen formulierten wir gemeinsam neue Ziele für unsere Sprints.
Hier ein kurzer Abriss über das "Leben im Mob" über mehrere Monate - tagein, tagaus. Wir verwendeten fast ausschließlich den "starken" Mob-Ansatz, bei dem der "Fahrer" an der Tastatur saß und die Gruppe als "Navigatoren" dem Fahrer sagte, was er zu tun hatte. Für die gemeinsame Nutzung von Bildschirmen verwendeten wir Microsoft Teams.

Zu Beginn war die Begeisterung im Team für die Mob-Programmierung nicht durchgängig groß. Einige Gründe dafür waren:

  • die meisten Leute waren es gewohnt, allein zu arbeiten; einige hatten Pairing eingesetzt
  • einige hatten Mob als "Leute sitzen herum und ein Entwickler macht die Arbeit" erlebt
  • "Das Management sah Mob als Zeitverschwendung und zu teuer an. Das Management wollte Pairing oder sogar Mob-Programmierung nicht fördern, weil es zu hohe Kosten befürchtete.

Arbeitssituation
Arbeitssituation

Unsere Erfahrungen nach mehreren Monaten ausschließlicher Arbeit mit mob: Einfach und kurz - genial!

Und hier ist der Grund dafür:

  • mob ist eine großartige Möglichkeit, Wissen zwischen Kollegen auszutauschen und Arbeitsweisen zu etablieren: Programmierstil, bewährte Verfahren, Tools, IDE-Einstellungen, Git(Hub)-Arbeitsweisen, Bash-Hacks usw.
  • Der Mob vereinfacht die Einarbeitung von Mitarbeitern - man kann sie ins kalte Wasser werfen und sie zwischen den Rollen als Fahrer/Navigator wechseln lassen :)
  • das Team kann gemeinsame Setup-Probleme gemeinsam lösen, da jeder Dev-Themen lokal zum Laufen bringen muss: jeder Entwickler-Rechner muss auf ähnliche Weise funktionieren, um als Treiber teilnehmen zu können
    • Terraform, GCP, Java, SDKs etc.
    • Skripte müssen überall laufen, nicht nur in der CI/CD-Pipeline (Linux, Mac, Windows)

  • es gibt keinen Druck, als Treiber aufzutreten
    • höre einfach auf das, was deine Navigatoren sagen
    • keine Notwendigkeit zu denken und zu tippen
    • weniger Druck auf den Treiber als in einem klassischen "Ich teile meinen Bildschirm und mache die ganze Arbeit"-Setup
    • Die Bereitschaft, die Rolle des Fahrers zu übernehmen, ist größer, insbesondere bei jüngeren Fahrern, da sie nicht vor der Gruppe "auftreten" müssen.


  • Navigatoren müssen ihre Gedanken für alle, auch für den Fahrer, verständlich machen
    • damit alle leichter folgen können (und die zehnfachen Entwickler mit "schwarzem Gürtel" nicht wegrennen)
  • das Team kann Fragen/Herausforderungen an Ort und Stellelösen und nicht erst später (lies: "wahrscheinlich nie")
  • das Team entwickelt ein gemeinsames Gefühl für das Sprint-Ziel des Teams
  • ein hoher "Bus-Faktor" entsteht - jeder weiß, was los ist und jeder kann im Falle eines plötzlichen Ausfalls einspringen
  • es besteht kein Bedarf an zusätzlichen Sync-Meetings, da alle bereits auf dem Laufenden sind
  • es sind keine Peer-Reviews erforderlich, da jeder Git-Commit von den Navigatoren mit einem 'reviewed-by' versehen wird
  • Es ist einfacher, eine gemeinsame Basis für Code-Standards/-Stil, Architektur, CI/CD und Tests zu entwickeln, da die Teammitglieder ihre Meinungen sofort mit allen teilen können.
  • es ist einfacher, seine (neuen) Kollegen kennenzulernen , wenn man ein Team von Grund auf neu aufbaut!

Tools, die wir verwenden:

  • greenfield auf Google Cloud Platform (GCP)
  • APIs mit zwei benachbarten Teams, derzeit asynchron; Nachrichtenaustausch über GCP Pub/Sub, später REST und UI-Integration in das große 'Lieferantenportal'
  • Java, Spring Boot, Docker, Terraform, Github (Actions), CI/CD, Google Cloud Platform (Pub/Sub, Cloud Spanner), DevSecOps ('you build it, you run it').

Challenges

Nach mehr als einem halben Jahr im Mob sind wir, wie gesagt, von dieser Form der Zusammenarbeit begeistert. Aber natürlich gibt es auch einige Herausforderungen, über die man sich im Klaren sein sollte, bevor man sich entschließt, diesen Programmieransatz auszuprobieren.


Unsere Herausforderungen in Kürze zusammengefasst:

  • Verstecken" in der Meute: Es kann schwieriger sein, neue Teammitglieder einzuschätzen, da die Möglichkeit besteht, dass sie in der Meute "Deckung" suchen
  • Potentiell hoher Leistungsdruck, wenn man sich dem Mob anschließt, insbesondere für Leute, die es gewohnt sind, allein zu arbeiten und ein "festes" Produkt zu liefern
  • zu ausführliche Diskussionen - jemand muss moderieren und sich auf die Story und die Sprint-Ziele konzentrieren
  • Es ist schwer, die Gruppe hinter sich zu lassen - ich arbeite in Teilzeit, also gibt es immer einen Punkt am Nachmittag, an dem ich sagen muss: "Wir sehen uns morgen".
  • Es ist schwierig, Geschichten zu parallelisieren, da der Mob an einer Geschichte zur gleichen Zeit arbeitet.
  • Das Leben im Mob kann manchmal hart und anstrengend sein - sich zu konzentrieren, zu diskutieren und gemeinsam zu programmieren kann und wird an den Kräften zehren
  • es besteht die Gefahr, dass man Leute zurücklässt, die ihren Gedanken nicht folgen und sie nicht ausdrücken können
  • man gewöhnt sich schnell daran, mit anderen zusammenzuarbeiten, was die Angst davor auslösen kann, alleine zu arbeiten und/oder Entscheidungen zu treffen, ohne Input oder Unterstützung durch die Gruppe
  • Für jüngere Teammitglieder ist es schwieriger, Themen im Mob aktiv zu diskutieren.

Unsere Learnings

Als wir mit dem Programmieren im Mob anfingen, hatte ich bereits einige Erfahrungen gesammelt. Ein halbes Jahr später sind wir jedoch viel schlauer und haben viel gelernt!

Unsere wichtigsten Learnings:

  • Bevor man beginnt, sollte man eine klare Einführung in die Mob-Sitzungen geben und das "Warum" erklären
    • den Rahmen so gestalten, dass sich alle wohl fühlen
    • Gib jedem die Chance, Schwächen zu zeigen.
    • es gibt niemanden auf der Welt, der alles weiß, und niemand ist perfekt
    • Scheitern ist Teil des Geschäfts #failfast
  • Stellt sicher, dass jeder in der Lage ist, den Bildschirm gemeinsam zu nutzen (ausreichende Internet-Bandbreite zu Hause, ausreichend gute Kamera, ruhiger Raum usw.)
  • Wechselt häufig (15 Minuten) - wir verwenden den Cuckoo-Timer
  • Erstellt einen eigenen MS Teams-Kanal für eure Mob-Sitzungen, z. B. mit dem Namen "Mob-Sitzungen / Anrufe Anrufe".

Teams Calls
Teams Calls
  • eine Videositzung starten, an der alle teilnehmen können (Entwickler, Agile Master (AM), Product Owner (PO) usw.) und wissen, wo man sich befindet
  • Gebt den Videositzungen lustige Namen :)
Teams channel
Teams channel
Mob Sessions Part 1
Mob Sessions Part 1
  • AM und PO können an der Mob-Sitzung für die tägliche Besprechung teilnehmen
  • Git-Commit-Nachricht mit 'reviewed-by:' Mob-Mitgliedern (Vorlage verwenden)
Review
Review
  • erwägt, einen externen Coach für eure ersten Mob-Sitzungen zu engagieren
  • Neue Mitarbeiter, die zu uns kommen, beschreiben unsere Sitzungen als "Aufspringen auf einen schnell fahrenden Zug".
  • Fragt bei Vorstellungsgesprächen mit neuen Mitarbeitern/Bewerbern (für Fernarbeitsplätze) nach ihren Erfahrungen mit Mob, Pairing, der Arbeitsumgebung zu Hause (Internetverbindung, ruhiger Raum, Kamera) und macht deutlich, dass ihr Mob/Pairing programmiert, und fragt sie direkt, was sie davon halten
  • Sprecht in Nachbesprechungen am Ende des Sprints offen über eure Gefühle und hört euch Beschwerden, Ängste und Zweifel bezüglich der Mob-/Pairing-Sitzungen an
  • Macht etwa jede Stunde eine Pause - ernennt jemanden zum "Pausenbeobachter" und verwendet Hilfsmittel, um dies zu erzwingen
  • schwierige oder neue Probleme lassen sich im Mob leichter fokussieren/erforschen
  • Mob-Intelligenz = kollektive Summe des Wissens
  • Zeit finden, um aus dem Mob aus zubrechen - z.B. jeder liest alleine über ein Thema oder eine Frage nach und diskutiert dann die Ergebnisse/Lernerfahrungen im Mob
  • nicht jede Aufgabe passt zum Mob - seid mutig genug, dies deutlich zu machen, und ermutigt die Leute, im Zweifelsfall ihre Stimme zu erheben!

Zukunft

"Einmal im Mob, für immer im Mob"? Nun, das konnten wir bisher noch nicht feststellen. Wenn neue Teammitglieder hinzukommen, wird unsere Gruppe wachsen. Wir werden dann neu bewerten, ob Mob-Programmierung noch das Richtige für uns ist. Wahrscheinlicher ist, dass wir uns dann für Pair Programming und einige Mob-Sitzungen entscheiden, um Fachwissen innerhalb des Teams auszutauschen. Wir werden auch zeitweise Teammitglieder aus anderen Teams zu unseren Sitzungen einladen. Derzeit arbeiten wir alle zu 100 % von unseren mobilen Büros aus. Die Zeit wird zeigen, wie es weitergeht - aber wir fühlen uns gut vorbereitet und freuen uns auf die neuen Herausforderungen 😊.

Ein Touchpad wird bedient
Ein Touchpad wird bedient

Verstärke unser Team als Software-Entwickler

1 Person gefällt das

0Noch keine Kommentare

Dein Kommentar
Antwort auf:  Direkt auf das Thema antworten

Geschrieben von

Marcel Sauer
Marcel Sauer
Senior Developer

Ähnliche Beiträge

We want to improve out content with your feedback.

How interesting is this blogpost?

We have received your feedback.

Cookies erlauben?

OTTO und drei Partner brauchen deine Einwilligung (Klick auf "OK") bei einzelnen Datennutzungen, um Informationen auf einem Gerät zu speichern und/oder abzurufen (IP-Adresse, Nutzer-ID, Browser-Informationen).
Die Datennutzung erfolgt für personalisierte Anzeigen und Inhalte, Anzeigen- und Inhaltsmessungen sowie um Erkenntnisse über Zielgruppen und Produktentwicklungen zu gewinnen. Mehr Infos zur Einwilligung gibt’s jederzeit hier. Mit Klick auf den Link "Cookies ablehnen" kannst du deine Einwilligung jederzeit ablehnen.

Datennutzungen

OTTO arbeitet mit Partnern zusammen, die von deinem Endgerät abgerufene Daten (Trackingdaten) auch zu eigenen Zwecken (z.B. Profilbildungen) / zu Zwecken Dritter verarbeiten. Vor diesem Hintergrund erfordert nicht nur die Erhebung der Trackingdaten, sondern auch deren Weiterverarbeitung durch diese Anbieter einer Einwilligung. Die Trackingdaten werden erst dann erhoben, wenn du auf den in dem Banner auf otto.de wiedergebenden Button „OK” klickst. Bei den Partnern handelt es sich um die folgenden Unternehmen:
Google Ireland Limited, Meta Platforms Ireland Limited, LinkedIn Ireland Unlimited Company
Weitere Informationen zu den Datenverarbeitungen durch diese Partner findest du in der Datenschutzerklärung auf otto.de/jobs. Die Informationen sind außerdem über einen Link in dem Banner abrufbar.
Du kannst deine Einwilligung auch jederzeit grundlos mit Wirkung für die Zukunft widerrufen, indem du auf den Button "Cookie-Einstellungen" im Footer der Website und "Cookies ablehnen" klickst.