Paartausch: Was sind die Vor- und Nachteile?

15

Die Grundidee, die von den meisten Agile / XP- Theoretikern vertreten wird, scheint zu sein, dass Paare regelmäßig getauscht werden sollten. Zum Beispiel sollte jeder Programmierer einmal am Tag die Paare tauschen. Die Hälfte der Leute tauscht zu Beginn des Tages, die Hälfte der Leute tauscht nach dem Mittagessen: Aufgrund externer Faktoren wie Besprechungen, Feiertage und dergleichen neigen die meisten Leute dazu, ihre Swap-Zeiten ein- oder zweimal pro Woche umzudrehen, so dass sich die Paarkonfigurationen verteilen ziemlich gleichmäßig im Team.

Ein Grund für den häufigen Austausch ist, dass das Wissen schnell und gleichmäßig im Team verteilt wird, anstatt dass bestimmte Fähigkeiten und Kenntnisse auf bestimmte Personen konzentriert sind. Dies bedeutet, dass die Arbeit reibungslos fortgesetzt werden kann, wenn die Mitarbeiter entweder abwesend sind oder das Unternehmen verlassen. Ein weiteres Argument, das eine Art logische Konsequenz für die Programmierung von Paaren ist, ist, dass jedes Mal, wenn jemand auf Sie tauscht, eine neue Codeüberprüfung durch ein frisches Paar von Augen erfolgt, wodurch nur die Codequalität verbessert werden kann.

Beide Behauptungen klingen vernünftig; Aus Managementsicht klingt es so, als ob Sie sowohl die Stabilität als auch die Qualität verbessern. Daher ist das häufige Austauschen in den meisten Agile / XP- Büchern, die ich mir angesehen habe, so ziemlich die Standardtheorie .

Also, wenn tatsächlich in die Praxis umgesetzt, was denken die Leute tatsächlich über Paartausch

  • Die Sicht eines Programmierers?
  • Die Sicht eines Managers?

Und

  • Was sollte bestimmen, wann jemand ein Paar wechselt?

quelle
Ist das dasselbe wie "Pair Programming"?
Robert Harvey
@ Robert Harvey - Nun, es ist ein Aspekt der Paarprogrammierung. Wenn ein Team entscheidet, paarweise zu programmieren (für einen Teil seines Arbeitstages), muss es entscheiden, wie Programmierer paarweise angeordnet werden sollen, dh wann ein Programmierer ein Paar verlassen soll (ein anderer sollte gleichzeitig beitreten) ). Das ist "Pair Swapping".
+1 für die tolle Frage. Leider finde ich es schwierig genug, einen Shop zu finden, der regelmäßig Pairings durchführt, geschweige denn Daten zum Pairing-Tausch. Hoffentlich irre ich mich dabei und du bekommst ein paar gute Antworten. Ich bin sehr daran interessiert, welche zu hören.
Jesse McCulloch
2
Ich persönlich würde Pair Swapping als sehr störend empfinden. Der Versuch, auf so engem Raum mit so vielen unterschiedlichen Persönlichkeiten und Fähigkeiten umzugehen, würde zu viel kognitive Dissonanz erzeugen.
Robert Harvey
@Jesse McCulloch - Ich arbeite an einem Ort, an dem nur Programme gepaart und getauscht werden, so wie es die Bücher eines Teams vorgeben. Ich habe auch in einer reinen Solo-Umgebung gearbeitet und habe daher eine ziemlich gute Perspektive auf den Kontrast. Ich würde jedoch gerne die Meinungen anderer hören, um zu sehen, ob sie zu meinen eigenen passen, ohne sie zu sehr zu beeinflussen.

Antworten:

4

Paarprogrammierung ist schwierig.

Es ist schwierig, weil es am besten funktioniert, wenn die beiden beteiligten Personen ein enges Qualifikationsniveau aufweisen und dies in einigen Arbeitsumgebungen schwierig sein kann. Beim Auswechseln kann es schwieriger werden, weil Sie eine andere Person mit der entsprechenden Fähigkeitsstufe suchen müssen, um sie über das aktuelle Problem auf dem Laufenden zu halten. Dies hat den Vorteil, dass mehr Personen mit einem bestimmten Code in Berührung kommen, für den ein Pairing durchgeführt wurde. Dies sollte weniger dazu führen, dass Code nicht repariert werden kann, da niemand genug darüber weiß. Es sollte auch die Gruppenverantwortung und die Fähigkeit für jedermann verbreiten, irgendein Stück Arbeit aufzunehmen.

Ich habe festgestellt, dass auch in Umgebungen, in denen Pairing durchgeführt wird, Pair-Swapping die Kosten nicht wert ist. Dies kann jedoch daran liegen, dass unsere Aufgaben nie länger als 1,5 Tage dauern. Wir fanden einen großen Vorteil, wenn die Aufgaben nicht länger als 1,5 Tage ausgeführt wurden. Das Austauschen von Paaren kann im Zusammenhang mit länger laufenden Aufgaben sinnvoller sein.

dietbuddha
quelle
Persönlich mag ich es, mich mit Menschen auf allen Ebenen zu paaren. Manchmal lerne ich, manchmal unterrichte ich und manchmal erledigen wir nur Dinge. Lernen und Lehren bilden jedoch eine langfristige Teamkapazität, die meiner Meinung nach genauso wichtig ist wie das Abhaken von Funktionen.
William Pietri
Sie mögen das glauben, aber der Projektmanager, der seine Frist verkürzt, weil Ihr Fachwissen sich daran gewöhnt, die Leute in seiner Zeit zu schulen, anstatt so schnell wie möglich Code zu produzieren, würde dem nicht zustimmen. Und so laufen die meisten Projekte ab. Es bleibt einfach keine Zeit, die Leute zu schulen, um die Fähigkeiten zu besitzen, die für die Arbeit benötigt werden, damit die Junioren nicht aus dem Ruder laufen und nur die Schuld für Budgetüberschreitungen tragen.
Jwenting
@ William Pietri: Meiner Erfahrung nach ist Pairing kein gutes Format für den Unterricht. Ich habe kein Problem damit, jemanden zu nehmen und ihn durch den Code zu führen, um ihm zu erklären, was los ist. Dies ist jedoch keine Paarprogrammierung.
Dietbuddha
@jwenting: Wenn Sie sagen, dass Pair-Programmierung in Läden, die sich auf Bullshit-Fristen in Bezug auf Qualität und Nachhaltigkeit konzentrieren, nicht gut funktioniert, würde ich nicht argumentieren. Mein Tipp: Arbeiten Sie an einem Ort, der nicht verrückt ist.
William Pietri
@ Dietbuddha: Funktioniert für mich! Der schnellste Weg für mich, eine neue Sprache, ein neues Framework oder eine neue Bibliothek zu erlernen, besteht darin, sich mit Leuten zusammenzutun, die sie gut kennen. Und ich kenne keinen besseren Weg, um einen Neuling auf den neuesten Stand zu bringen, als das Pairing. Nehmen wir
William Pietri
3

Ich bin sowohl Programmierer als auch Manager. Hier ist meine Einstellung:

Regelmäßiges Tauschen ist großartig. Ich bevorzuge es, 2-4 Mal pro Tag zu tauschen, was ungefähr so ​​schnell ist, wie ich denke, dass du gehen kannst. Für uns kommt das an natürlichen Bruchstellen: in der Regel Mittagessen und Nachmittag. Es ist wahrscheinlich in Ordnung, sich jeden oder jeden zweiten Tag zu ändern, aber ich würde mir Sorgen machen, dass es viel länger dauert. (Ich habe von einem Ort gehört, der so selten wie alle sechs Wochen tauscht, was ich für verrückt halte. Nach dieser Zeit wären Sie bereit, einen Heiligen zu erstechen.)

Als Programmierer liebe ich es, weil ich neue Perspektiven bekomme, andere Bereiche des Codes durchschaue und entweder bei etwas bleiben oder von etwas weitermachen kann, was ich bevorzuge. Ich bin erst kürzlich vom Solo-Coding zum Pairing übergegangen und bin begeistert: Ich lerne mehr, habe mehr Spaß und lerne mehr.

Als Manager finde ich das großartig, weil es viele Probleme mit dem Lkw-Faktor und Engpässen löst. ZB nehme ich mir dieses Wochenende ein langes Wochenende für die Hochzeit eines Freundes und mache mir keine Sorgen: Alles, woran ich gearbeitet habe, wurde auch von anderen Leuten bearbeitet. Ich denke auch, dass es den Teammitgliedern wirklich hilft, die Stärken und Schwächen des anderen zu schätzen und die kollektive Eigentümerschaft von Code zu fördern.

Ich habe das Gefühl, dass es hauptsächlich an den Beteiligten liegt, wer bei der aktuellen Arbeit bleibt. Manchmal möchten Sie etwas durchschauen und manchmal sind Sie bereit für eine Veränderung. Wir tauschen auch manchmal aus, um Fachwissen einzubringen, oder damit jemand etwas lernt, das ihn interessiert. Wir versuchen, unsere Arbeitseinheiten ziemlich klein zu halten (0,5 bis 2,0 Paartage), also ist es keine große Sache, wie auch immer der Austausch stattfindet .

William Pietri
quelle
Für mich muss ich sagen, dass das Auswechseln nur dann gut ist, wenn a) ich nicht gerne mit dem Mann programmiere, mit dem ich programmiere, b) ich die Geschichte, an der ich arbeite, nicht mag (wie das Reparieren eines Seils) alter Speicherfehler). Ansonsten möchte ich von Anfang bis Ende durchhalten. Persönlich denke ich, dass das Vertauschen von Paaren die Codequalität verringert, da guter Code eine einzige klare Vision haben sollte. Je mehr Menschen an einem Teil arbeiten, desto unübersichtlicher wird diese Vision. Was den Wissensaustausch angeht, würde ich sagen, dass die meisten Leute eine Vorstellung davon haben, was vor sich geht, aber niemand versteht etwas wirklich richtig.
@B Tyler - Ich denke, eine Codebasis ist eine gemeinsame intellektuelle Arbeit, daher muss man eine klare Vision haben, die auch eine gemeinsame Vision ist. Das ist ein Teil des Grundes, warum ich es für wichtig halte, zu tauschen: Es erfordert viel Interaktion und Diskussion, um einen soliden gemeinsamen Ansatz zu entwickeln.
William Pietri
1

Okie, hier ist die Antwort eines selbsternannten pragmatischen Agile / XP-Programmierers. Ich programmiere seit mehr als zwei Jahren. Wenn die Paarprogrammierung gut ist, tauschen Sie die Paare häufig aus (idealerweise alle zwei Stunden, wenn nicht jeden halben Tag). In unserem Büro ist es wichtig, die Paare jeden Tag (normalerweise) oder alle zwei Tage (im schlimmsten Fall) zu tauschen. Dies alleine zu tun, kann uns viel Vertrauen in die Qualität des Codes geben , den wir begehen und den wir lernen oder den wir bei jeder Paarrotation anwenden (wir wissen, dass die Codeüberprüfung gut ist, je mehr desto besser und je früher desto besser. Dies ist das, was "Paarprogrammierung, einschließlich des Austauschs von Paaren", erreicht.

Warum wechseln wir nicht alle zwei / vier Stunden die Paare? Nun, eigentlich war ich in Teams, die das auch üben. Es ist sicherlich viel cooler und produktiver. Aber hier ist der Deal, das Zeitintervall für das Tauschen von Paaren sollte nicht die Regel sein, es sollte von selbst passieren; Nur dann kann der Manager oder das Unternehmen seine Vorteile erkennen.

Ich habe das miterlebt und erlebt. Ich bin jetzt sein Evangelist. Es ist keine Theorie. Eher ist es durch und durch pragmatisch :) Glückliches Ping-Pong-Pairing und Paartausch.

Karthiks
quelle
1
Leider bin ich jetzt völlig der Meinung, dass Paarprogrammierung im Allgemeinen eine schlechte Idee ist; häufiges Paartauschen bei der Paarprogrammierung macht die Sache nur noch schlimmer. Ich habe die ganze Theorie gehört und viel in der Praxis ausprobiert und finde es unglaublich ineffizient, viel langweiliger und frustrierender als Solo-Programmierung und führt zu schlechterem Code.