Was ist "Schwärmen"?

42

Ich habe gehört, dass Schwärmen im Zusammenhang mit Agiler oder Extremer Programmierung erwähnt wurde. Es scheint eine Ergänzung zum Pairing zu sein.

Was genau ist das Wann sollte es angewendet werden? Wie machst du das gut?

Jay Bazuzi
quelle
@CodeWorks: Meine Suchanfragen bei Google ergaben nur wenige relevante Ergebnisse und keine mit einer klaren Antwort auf meine Frage. Wenn es da draußen eine kanonische Antwort gibt, dann poste sie auf jeden Fall hier.
Jay Bazuzi
In dem Strategie-Videospiel "Sword of the Stars" gibt es eine Voice-over-Zeile, in der die Ameisen- / Mantis- / Hivemind-Leute sagen, dass Sie einen Forschungsbefehl erteilen: "Wir schwärmen im Labor, Majestät." Ich bin immer davon ausgegangen, dass das mit einem Gefühl dramatischer Ironie landen sollte.
Erik Reppen

Antworten:

43

Die Idee ist, dass jeder in Ihrem Team zur gleichen Zeit an der gleichen Geschichte arbeitet. Anstatt dass sich jeder auf verschiedene Aufgaben konzentriert, konzentriert sich jeder auf eine Aufgabe, bis sie erledigt ist. Dann machen sie mit dem nächsten Schritt weiter, bei dem alle gemeinsam daran arbeiten.

Dies hilft Teams, die Schwierigkeiten haben, Geschichten vor dem Ende des Sprints zu beenden. Oft beenden Teams 80% aller Geschichten, aber keine sind vollständig. Dies ist weniger nützlich, als 80% der Storys vollständig zu Ende zu bringen, da unvollendete Storys für einen Endbenutzer (effektiv) keinen Wert haben. Es ist einfacher, Geschichten zu Ende zu bringen, wenn sich jeder im Team auf eine Geschichte konzentriert. Dies ist die Motivation für das Schwärmen.

Hier gibt es einige Schwierigkeiten. Beispielsweise kann die Qualitätssicherung Dinge nicht immer testen, bevor sie erstellt (oder sogar entworfen) wurden. In diesem Fall sollten Sie frühzeitig gemeinsam einen Entwurf erstellen, und dann kann die Qualitätssicherung Tests für den Entwurf und nicht für die tatsächliche Implementierung schreiben (die anfänglich fehlschlagen).

Oleksi
quelle
+1. Interessant. Haben Sie diese Arbeit in der Praxis gesehen?
CodeART
2
Eine andere Art zu sagen ist "so wenig Arbeiten wie möglich", richtig?
Jay Bazuzi
1
@CodeWorks Ja. Wir haben es dort eingesetzt, wo ich gerade erfolgreich arbeite. Das Entwickeln macht ziemlich viel Spaß, da es funktionsorientiert ist. Alle arbeiten zur gleichen Zeit auf dasselbe Ziel hin, und ich habe festgestellt, dass dies die Teamarbeit sehr gut fördert.
Oleksi
1
@ JayBazuzi Ja, so ziemlich. Es ist jedoch auch wichtig, dass das gesamte Team unterstützt wird.
Oleksi
9
@ CodeWorks, überhaupt nicht. Tatsächlich hat es wahrscheinlich zugenommen. Weil alle so eng zusammenarbeiteten, tauchten weniger Blocker auf. Wenn etwas auftauchte, wusste zumindest jemand im Team, wie es zu lösen war, und war in der Lage, dies sofort zu tun, da es seine volle Aufmerksamkeit hatte. Außerdem ist das Wechseln des Kontexts im Allgemeinen für Ihre Produktivität schlecht. Fragen Sie einfach Ihre CPU. : P
Oleksi
10

"Schwärmen" bezieht sich nur auf die Tatsache, dass mehrere Personen zusammenarbeiten, um eine Aufgabe oder Geschichte zu erledigen. Nach meiner Erfahrung machen Sie das nicht oft.

Normalerweise arbeitet jedes Mitglied meines Teams an einer anderen Aufgabe und / oder Geschichte. Wenn jemand zurückfällt oder wenn es den Wunsch gibt, eine Aufgabe oder Geschichte frühzeitig zu beenden, hören andere Menschen auf, an anderen Aufgaben zu arbeiten und "schwärmen", um die Aufgabe zu erledigen, was bedeutet, dass sie alle gemeinsam an einer einzelnen Aufgabe oder Geschichte arbeiten, bis sie fertig sind abgeschlossen.

Wir hatten kürzlich eine kleine Anzahl von Geschichten, die ziemlich langweilig und uninteressant waren. Ich gab dem Team einen kleinen Anreiz (Pizza) und eine Frist (Ende des Tages), um die Arbeit zu beenden, also schwärmten sie über die Geschichte und schlugen an einem Nachmittag mindestens ein paar Arbeitstage aus. Sie haben die Arbeit erledigt und sind früh aus dem Weg gegangen, und dann hat jedes Teammitglied alles wieder aufgenommen, woran sie gearbeitet haben. Sie bekamen ein kostenloses Mittagessen, ich erledigte frühzeitig die Arbeit, die sich aufgrund der Langeweile hätte hinziehen können, und das Team war ihrem Sprint voraus. Win-Win-Win.

"Schwärmen" ist nichts anderes als ein ausgefallener Begriff für "Hey, lass uns dir dabei helfen".

Bryan Oakley
quelle
Dies scheint ganz anders zu sein als die andere Antwort. Sie sagen, "wenn es ein ungewöhnliches, dringendes Bedürfnis gibt, bringen Sie alle dazu". @Oleksi sagte: "Wenn Sie einen Entwicklungszyklus planen, ist es besser, alle gleichzeitig mit einer Aufgabe zu beauftragen, als jede Person parallel an einer separaten Aufgabe zu arbeiten." Beide Definitionen sind plausibel, und beide sind nützliche Methoden, aber er hat vierfache Stimmen. Daher gehe ich davon aus, dass seine Antwort die am weitesten verbreitete Definition widerspiegelt.
Jay Bazuzi
@Jay Bazuzu: Ob jeder im Rahmen der Sprint-Planung einer einzelnen Aufgabe zugewiesen wird oder ob dies bei Bedarf auf organischer Basis geschieht, die Definition ist nach wie vor ziemlich gleich - alle arbeiten gemeinsam an einer einzelnen Aufgabe.
Bryan Oakley
Ich denke, Ihre Antwort ist hier sehr wichtig. Die andere Antwort, die "akzeptiert" wird, ist das "Was". Aber deine scheint das Wie anzusprechen.
Ape-inago
2

Schwärmen ist eigentlich ein zentrales Konzept für Beweglichkeit. Es ist nichts, was getan wird, "wenn es Probleme gibt". Schwärmen bedeutet in seiner einfachsten Form, dass Teams gemeinsam an Elementen (Geschichten) arbeiten und diese vollständig bearbeiten. Das Kernkonzept besteht darin, "das Starten zu beenden und das Beenden zu beginnen". Mit anderen Worten: Anstatt dass jeder Entwickler unabhängig an einer Story arbeitet, konzentriert sich das Team auf eine begrenzte Anzahl von Storys / Aufgaben, um die einzelnen Aufgaben schneller zu erledigen. Stellen Sie sich das als den Unterschied zwischen einem Single-Thread-System und einem Multi-Thread-System vor. Wenn eine User Story 10 Aufgaben hat, die erledigt werden müssen, und jede 8 Stunden dauert, unter der Annahme, dass es keine Komplikationen gibt, könnte ein Entwickler jede Aufgabe nacheinander bearbeiten und die Story in 80 Stunden oder in etwa zwei Wochen (bei einem Sprint von 10 Tagen) abschließen 8 Entwicklerstunden pro Tag). Was ist, wenn zwei Entwickler die Aufgaben aufteilen und gleichzeitig bearbeiten? Dieselben 80 Arbeitsstunden können auf diese Weise in einer Woche erledigt werden. Fügen Sie ein drittes hinzu, und Sie können sehen, dass dies in 3 bis 4 Tagen erfolgen kann.

Das Schwärmen kann auf verschiedene Arten erfolgen:

  1. Paarprogrammierung (zwei Entwickler arbeiten Seite an Seite am Code, einer ist der "Treiber", der den Code schreibt, der andere ist der Navigator, der die langfristige Richtung im Auge behält und dabei hilft, den Code gleichzeitig zu überprüfen.
    1. Paararbeit: Ein Entwickler und ein Tester arbeiten gleichzeitig an der gleichen Arbeit, eine Codierung und die andere testen, Automatisierung schreiben usw
    2. Schwärmen wie oben erwähnt, was sehr häufig ist. In der Regel schwärmen Teammitglieder eine Story, aber bei dieser Methode besitzt jede einzelne Aufgabe.
    3. Mob-Programmierung: Das gesamte Team konzentriert sich jeweils auf eine Story (oder sogar auf eine Aufgabe).

Teams, die jedem Entwickler eine Story geben, neigen dazu, zu viel "Work in Progress" oder WIP zu haben, und oft werden viele Storys gestartet, aber nicht fertiggestellt. Dies ist ein ANTIMUSTER und NICHT die beste Vorgehensweise.

Schwarmteams haben in der Regel weniger WIP und vervollständigen mehr Storys - und damit meine ich Entwickelt, Getestet, Genehmigt und Bereitstellungsbereit. Dies ist also eine Übung, die den Kern der Beweglichkeit ausmacht.

Curtis Reed
quelle
1

Der folgende Artikel zu InfoQ beschreibt einen Ansatz zum Schwärmen:

  • Das Team verwendet Mob-Programmierung für die meisten Programmieraufgaben
  • Ein Teil des Teams oder einzelne Teammitglieder teilen sich oft und schließen sich in kurzen Abständen dem Team an
  • Jeder macht alles (keine Rollen)
  • Das Team verwendet keine Schätzungen, WIP ist immer eine, keine Notwendigkeit für Aufstände oder ähnliche Zeremonien

Lesen Sie den Artikel für die detaillierte Erklärung.

Dan
quelle