Was sind mögliche Nachteile der Paarprogrammierung? [geschlossen]

22

Pair-Programmierung ist heutzutage ziemlich berühmt.

Es hat mehrere Vorteile wie:

  1. Programme mit weniger Fehlern.
  2. Die Wartungskosten nach der Produktion sind viel geringer.
  3. Etablierte Praktiken werden in Frage gestellt, was zur Entstehung neuer Ideen führt.
  4. Programmierer lernen voneinander.
  5. Programmierer entwickeln Soft Skills.

Aber was sind die Nachteile der Paarprogrammierung?

freier Vogel
quelle
1
Ist die "Parallele" im Fragentitel ein Tippfehler?
5gon12eder
14
Sie meinen etwas anderes als die Tatsache, dass zwei Personen die gleiche (möglicherweise geringere) Leistung erbringen müssen?
Robert Harvey
4
@ ThorbjørnRavnAndersen Es ist wahrscheinlich weniger.
Robert Harvey
4
@ ThorbjørnRavnAndersen Irgendwas stimmt nicht mit deiner Mathematik. Grundsätzlich sagen Sie, dass Sie ständig in der Peer- / Code-Überprüfung sind. Es ist kaum vorstellbar, wie zeitsparend das ist.
Robert Harvey
5
Dies kann ohne die Ablenkung einer vollständigen Pair Programming-Anordnung ziemlich leicht erreicht werden. Arbeiten Sie einfach mit Ihren Kollegen in dieser Funktion nach Bedarf zusammen.
Robert Harvey

Antworten:

28

Obwohl Pair Programming einen beachtlichen Ruf erlangt hat, hat es auch einige Fallstricke.

Einige von ihnen sind wie folgt:

  1. Bei der Paarprogrammierung können Sie sich nicht zurücklehnen und Ihren eigenen Code selbst bewerten.
  2. Eines der Paare hört möglicherweise auf, aktiv beschäftigt zu sein.
  3. Der Treiber muss "laut programmieren". Stilles Programmieren reduziert den Nutzen.
  4. Es kostet mehr Mannstunden, um die gleichen Funktionen zu produzieren. Das Gleichgewicht zwischen der Qualität des Codes und den erhöhten Codierungskosten muss aufrechterhalten werden.
  5. Ein "watch the master" -Phänomen kann auftreten, wenn ein erfahrener Programmierer mit einem unerfahrenen Programmierer zusammenarbeitet. Das unerfahrene Mitglied kann der Beobachter werden, wobei das erfahrene Mitglied die meiste Kodierung durchführt.
  6. Wenn sich zwei erfahrene Benutzer paaren, kann ein "Ego" -Phänomen auftreten, bei dem jedes Mitglied versucht, seine eigenen Ideen durchzusetzen.
freier Vogel
quelle
4
2 und 5 können mit Ping-Pong Pairing (Wechseln der Rollen zwischen Fahrer und Navigator im Gleichschritt mit dem TDD-Zyklus sehr schnell konterkariert werden: Alice schreibt einen fehlerhaften Test, Bob schreibt Code, um den Test zu bestehen, Alice refactors, Bob schreibt einen fehlerhaften Test, Alice schreibt Code, um den Test zu bestehen, Bob refactors, Alice schreibt einen nicht bestandenen Test…). Auf diese Weise wechseln Fahrer und Navigator spätestens alle paar Minuten die Rollen (eher Zehnsekunden), und jedes Mitglied erhält gleich große und wichtige Aufgaben.
Jörg W Mittag
5
4 klingt offensichtlich, aber ich bin nicht sicher. Das frühzeitige Erkennen von Fehlern und das frühzeitige Abrufen von Feedback kann beispielsweise die verdoppelten Entwicklerstunden ausgleichen (oder auch nicht).
Jörg W Mittag
4
@ JörgWMittag (Re: Ping-Pong-Paarung) klingt nach einem Rezept für einen sehr stressigen Arbeitstag: / Ich hoffe, ich muss nie an einem Ort programmieren, an dem diese oder eine andere strenge Paarprogrammierungsmethode durchgesetzt wird.
Andres F.
4
Bei der Ping-Pong-Programmierung müssen die beiden Beteiligten im Wesentlichen austauschbar sein. Ich habe einen Kollegen, bei dem die einzige sinnvolle Paarprogrammierungskombination darin besteht, ihn denken zu lassen und mich tippen zu lassen (und darüber nachzudenken). Es hilft ihm, den Fokus zu behalten und ich verstehe, was los ist.
Thorbjørn Ravn Andersen
3
Sie könnten auch erwähnen, dass einige Zeit damit verschwendet wird, über triviale Details zu diskutieren, während Sie sich in Code-Überprüfungen nur auf wichtige Aspekte konzentrieren können.
Giorgio
24

Ich habe mehrmals versucht, Paare zu programmieren, auch in einer Organisation, die (kurz) in Erwägung gezogen hat, sie als obligatorischen Prozess für alle Ingenieure einzuführen (Sie können sich vorstellen, wie gut diese Idee umgesetzt wurde). Persönlich hasste ich es.

Die Gründe, die ich unten aufführe, sind nur meine subjektiven Erfahrungen, und ich kann ihre Auswirkungen nicht konkret messen. Aber hier sind sie alle gleich:

1 - Ein „Navigator“ und ein „Fahrer“ helfen nur dann, wenn der erstere lautstark ist und der letztere zuhört.

Wir haben alle Entwickler getroffen, die hartnäckig, neugierig auf theoretische Fragen sind oder krankhaft - psychologisch - nicht in der Lage sind, alte Arbeiten wegzuwerfen, wenn jemand ein Problem damit vorschlägt. Und wir alle kennen Individuen, die zu schüchtern oder schüchtern sind, um Bedenken zu äußern oder Eckfälle vorzuschlagen.

Wenn diese Art von Entwicklern gepaart werden, übernimmt der Navigator schnell eine passive Rolle, und am Ende müssen Sie nur noch mit einer automatischen Codeüberprüfung programmieren. Dies ist eine enorme Verschwendung von Ressourcen.

2 - Pairing verhindert Kreativität.

Im Gegensatz zu dem, was früher über den Wert von "Gruppen-Brainstorming" empfunden wurde, ist man sich heutzutage einig, dass kreative Wissensarbeit Unabhängigkeit und Autonomie erfordert . Wenn Sie alleine arbeiten, können Sie schnell eine verrückte Idee zusammenfügen, um zu prüfen, ob sie tatsächlich realisierbar ist. Sie können wortlos einen seltsamen Prototyp zusammenbauen, und wenn Sie versagen, spielt es keine Rolle, weil niemand weiß .

Vergleichen Sie das mit Pairing: Wenn ich ein neues Konzept ausprobieren möchte, muss ich meinen Partner überzeugen, ihn Schritt für Schritt durch die Implementierung führen und hoffen, dass er mich nicht beurteilt, wenn es fehlschlägt. Eine solche Umgebung ist giftig für die Schaffung neuer Ideen.

3 - Design mit dem niedrigsten gemeinsamen Nenner.

Wenn ein Paar wie oben keine neuen Ideen entwickeln kann oder wenn sich die Einzelpersonen nicht auf ein grundlegendes Prinzip einigen können, wie ein Feature gestaltet werden soll, entsteht ein durcheinandergebrachtes Design, das versucht, Kompromisse einzugehen und niemanden zufrieden zu stellen.

Wenn Sie einen Entwickler zusammenbringen, der wunderbare, eloquente, am Himmel funktionierende Programmierabstraktionen mit einem schnellen und schmutzigen Performance-Freak erstellt, wird der Code, den sie zusammen produzieren, in der Regel weder besonders elegant noch besonders schnell sein.

4 - Mangelnde Autonomie und gewaltsame Transparenz.

Gewalttätige Transparenz ist ein Satz, den ich aus einer mäßig bekannten (und ziemlich kontroversen) Polemik gegen die Scrum-Methodik gezogen habe. Es beschreibt die Art und Weise, wie einige Organisationen Entwickler infantilisieren und sie mit dem Verdacht behandeln, der normalerweise nicht professionellen Arbeitnehmern vorbehalten ist.

Was auch immer Sie über die „Nachteile“ denken, die es mit sich bringt, die Arbeit von Entwicklern völlig transparent zu machen (und Sie stimmen möglicherweise nicht zu, dass dies tatsächlich ein Schaden ist), viele Menschen schätzen ihre Autonomie und ihre Fähigkeit, allein zu arbeiten, und vertrauen darauf, das Richtige zu tun. Es ist ein wichtiges psychologisches Bedürfnis, Entwickler zum Pairing zu zwingen (wie ich es in mindestens einem Geschäft erlebt habe), wird die Mitarbeiter bestürzt, verärgert und entfremdet zurücklassen.

5 - Einige Entwickler spielen nur zu zweit nicht gut.

Einige Menschen werden oder können sich in einer gepaarten Umgebung nicht angemessen verhalten. Sie haben möglicherweise schlechte Hygiene, schlechte Arbeitsgewohnheiten, eine aggressive Persönlichkeit, eine "laute" und "intensive" Art oder eine ganze Reihe anderer Eigenschaften, die sie zu guten Einzelarbeitern machen, aber zu Programmierern mit schlechten Paaren.

Kannst du das lösen? Nicht wirklich. Persönliches Verhalten zu ändern ist schwierig. Ein Pair-Programming-Shop muss sehr vorsichtig sein und viel Zeit investieren, um zu sehen, wie jemand arbeitet und ob er in der Lage ist, gut mit seinen Kollegen zusammenzuarbeiten. Eine stärkere Diskriminierung der Persönlichkeit bedeutet jedoch, dass die Einstellung länger dauert, es sei denn, Sie verlieren Ihre Standards in Bezug auf Fähigkeiten und Fachwissen.

Jimmy Breck-McKye
quelle
3
Obwohl ich den Ausdruck "gewaltsame Transparenz" mag, ist es meine Erfahrung, dass die bevorzugte Methode (Scrum / Agile oder etwas traditionelleres) keine Beziehung dazu hat, ob Entwickler wie Profis behandelt werden oder nicht. Dysfunktionale Organisationen behandeln Fachkräfte wie Kinder, unabhängig davon, ob sie Scrum oder CMMI befolgen (vorgeben).
David
1
"Vergleichen Sie das mit Pairing: Wenn ich ein neues Konzept ausprobieren möchte, muss ich meinen Partner überzeugen, ihn Schritt für Schritt durch die Implementierung führen und hoffen, dass er mich nicht beurteilt, wenn es fehlschlägt Umwelt ist giftig für die Schaffung neuer Ideen. ": Es geht nicht nur um Urteil, es geht um Geschwindigkeit. Sie möchten nicht abgelenkt werden, wenn Sie eine Idee haben, Sie möchten so viel wie möglich aufschreiben, solange Sie im Fluss sind. Die Paarprogrammierung verhindert dies aktiv.
Giorgio
1
Nachdem Sie alle Ihre Ideen aufgeschrieben haben, können Sie sie vielleicht am nächsten Tag aufräumen und anschließend einen Kollegen eine gründliche Überprüfung durchführen lassen, z. B. mit einem Tool wie dem Review Board, damit er die Zeit hat, sich Ihre anzuschauen Ideen beendet und ohne Zeitdruck darüber nachgedacht. Die Paarprogrammierung verhindert dies auch, da versucht wird, Codierung und Codeüberprüfung in einer Aktivität zu kombinieren.
Giorgio
2
@Jimmy: Wenn du fünf Antworten anstatt einer Antwort mit fünf Punkten geschrieben hättest, würdest du fünf positive Stimmen von mir bekommen.
Giorgio
Stimmen Sie voll und ganz zu, dass das Experimentieren eine leise und schnelle Arbeit erfordert - genau das Gegenteil von dem, was das Pairing erfordert. Möglicherweise funktioniert das Pairing einwandfrei für Entwickler, die Wartungsarbeiten durchführen oder einem großen, vorhandenen Unternehmenssystem diskrete Funktionen hinzufügen. Aber ich bin mir sicher, dass es für Arbeiten, die Entdeckungen, neue Technologien, Erfindungsreichtum oder kreative Wege erfordern, um mit schwierigen Bedingungen zu arbeiten, überhaupt nicht von Nutzen ist.
Jimmy Breck-McKye
12

Kommt auf deine Situation oder Perspektive an.

Pair Programming ist gut für die Organisation. Aber ist es gut für den Einzelnen?

Immerhin ist es eine kostensparende (frühzeitige Rückmeldung) und produktive Methode. Es geht nicht um Sie, sondern um das Projekt, Produkt, Unternehmen ($$).

Obwohl Sie persönliche Vorteile haben können, sind diese nicht der Grund oder das Ende einer Entwicklungsmethode. Die (Vollzeit-) Paarprogrammierung verhindert beispielsweise auch, dass Sie nachlassen, surfen usw. Sie müssen Ihre Pausen gegenüber Ihrem Partner begründen.

Ihr (rotierender) Partner wird die beste Überwachungskamera sein: Die Arbeitsintensität steigt.

Oder durch die Weitergabe von Wissen wird der Einzelne für das Unternehmen weniger riskant (z. B. kann er das Unternehmen nicht mit grundlegendem Wissen verlassen) und verfügt über weniger "Verhandlungschips".

Ich bin sicher, dass Sie mehr Punkte finden, wenn Sie positive Artikel kritischer aus IHRER realen Situation / Sicht im Unternehmen lesen, als aus der Sicht Ihres Managers.

Fast alle Methoden werden aus Sicht des Managers geschrieben.

Ein Gast
quelle
Wenn Sie das Unternehmen nicht besitzen, erhalten Sie Geld für die Generierung von Code. Der bessere Code, den Sie für Ihren Arbeitgeber produzieren können, ist meiner Meinung nach nicht zu verstehen, was Sie überhaupt wertvoll macht. Ich glaube, PP ist so intensiv, dass man das nicht den ganzen Tag machen kann, sondern automatisch Ruhe braucht.
Thorbjørn Ravn Andersen
7
Da manche Menschen gezwungen sind, ihren Lebensunterhalt damit zu bestreiten, "für einen Arbeitgeber wertvoll zu sein", müssen sie auch mit Eigeninteressen rechnen, und nicht nur mit den Interessen ihrer Arbeitgeber, die sie als Günstlinge ansehen.
Ein Gast
1
@ ThorbjørnRavnAndersen Wir leben nicht in einer idealen Welt, in der jeder Steuern zahlt und jeder nach seinem Verdienst entschädigt wird.
Den
1
@ ThorbjørnRavnAndersen Je besser der Code, desto besser für meinen Arbeitgeber? Ich wünschte, ich würde in einer Welt wie dieser leben, in der es darauf ankommt, Funktionalität so schnell wie möglich zu produzieren, wobei Codequalität lediglich ein Zwischenwert ist, der nicht mehr Zeit als unbedingt erforderlich erhalten sollte. Bugs sind in Ordnung, sie sind normalerweise nicht schwerwiegend und leicht zu beheben.
Alex
@ Alex "in der Regel nicht schwer" - ich sehne mich nach dieser Welt: D
Gusdor
5
  1. Plötzlich musst du jemandem sagen, wann du auf die Toilette gehen oder einen Kaffee trinken möchtest. Zumindest müssen Sie nicht um Erlaubnis fragen.

  2. Sie müssen mit den Hygienestandards der anderen Person fertig werden.

Den
quelle
4

Neben anderen Antworten:

  1. Viele Unternehmen, für die ich gearbeitet habe, haben ihren Programmierern Laptops ausgehändigt (bei Kunden vor Ort - einfacher, Geräte sicher aufzubewahren, wenn sie nach Feierabend mit nach Hause genommen werden, in der Lage zu sein, gelegentliche Aufgaben von zu Hause aus per VPN zu erledigen usw.). Viele Jahre Vor einiger Zeit hatte ich bereits Probleme, den Laptop-Bildschirm einer anderen Person (des "Fahrers") aus der Perspektive des Schulter-Surfens zu sehen - das Alter wird dies nicht verbessern (und einige Bildschirme sind außerhalb des idealen Betrachtungswinkels auf jeden Fall schwer zu lesen).

    Paarprogrammierer benötigen daher ausreichend große Bildschirme, was die Hardwarekosten erhöht und die Anpassbarkeit an den Standort einschränkt. Für manche kein Problem, in anderen Fällen wird es ein Problem sein.

  2. Ich habe auch festgestellt, dass Unterschiede in den persönlichen Hygienevorlieben (einschließlich Rauchen, Essen und Trinken) sowie Persönlichkeitsstörungen die Produktivität beeinträchtigen. Es ist einfach genug, zwei Programmierern zu sagen, sie sollen sich "anstrengen und zurechtfinden". Oft führt dies dazu, dass die Leute lieber den Mund halten und sich gegenseitig durch passiv-aggressive Aktionen leise sabotieren, um ihre Ressentiments voneinander abzulassen.
  3. Lärm. Zum einen mag ich ein ruhiges Arbeitsumfeld. Ich kann mir das ständige Geschwätz einiger Gruppen von Paarprogrammierern nicht vorstellen (da Sie für die Kommunikation sprechen müssen). Sogar die Vokalmusik auf meinen Kopfhörern kann meine Konzentration beeinträchtigen (milde Instrumente zum Abhören im Büro ...). Ich denke, dies kann durch den Umzug vom allgegenwärtigen Großraumbüro in dedizierte 2-Personen-Büroräume gemildert werden, aber das wird die Kosten wieder in die Höhe treiben.

Anekdoten für Ihre Unterhaltung:

  • Ein früherer Arbeitgeber hat einmal einen Auftragnehmer aus einem anderen Land angeheuert (alle bleiben anonym, um die Schuldigen zu schützen). Der Arbeitgeber stellte eine Unterkunft, aber keinen Transport zur Verfügung. Da der Auftragnehmer auf meinem Weg zur Arbeit wohnte, bot ich mich an, ihn abzuholen und wieder abzusetzen. Nehmen wir an, seine persönliche Hygiene entsprach nicht dem Standard, an den ich gewöhnt bin, und er rauchte auch stark ("der Stärkste!"), Während ich nicht rauchte. Bei unserer 15-minütigen Fahrt ins Büro ließ ich das Fenster heruntergeklappt - auch im Winter -, was nicht verhinderte, dass mein Auto nach dem dreimonatigen Aufenthalt des Kollegen wie ein abgestandener Raucherraum roch (nein, er rauchte nicht im Auto) , aber er hat auf mich gewartet).
  • Wir machten auch keine Paarprogrammierung, sondern setzten uns zeitweise nebeneinander an einen Konferenztisch. Nach ungefähr einem Monat lag ein schöner brauner Ring auf dem Holzimitat des Tisches um die Position der Maushand des Kollegen. Zu diesem Zeitpunkt bekam ich einen offenen Schreibtisch direkt neben dem offenen Callcenter-Bereich, den ich bevorzugte (mit etwas Hilfe von meinen Kopfhörern).
  • Dann gibt es das allgegenwärtige Bürogetränk: Kaffee. Obwohl ich es trinke, kann ich ohne auskommen und trinke nicht so oft wie andere Mitarbeiter. Atemzüge aus nächster Nähe können ziemlich unangenehm sein - ähnlich wie der leere, vergessene Bechergeruch. Nennen wir den Duft "schwül" ...
fr13d
quelle
3

Ich denke, Paarprogrammierung scheitert aus sozialen und praktischen Gründen. Im Wesentlichen bitten Sie eine Person, unter ständiger Aufsicht zu arbeiten, und die andere Person, nur Löcher zu stechen.

Was unvermeidlich nach einer Weile passiert, ist, dass sich das Paar aufteilt, um "E - Mails zu überprüfen" oder "Sie überprüfen das Live - Problem weiterhin schlecht" usw

Anstatt die Code-Ausgabe zu verbessern, wird die Lautstärke verringert. Beides aus praktischen Gründen: "Ich muss zu Mittag essen / mich nicht mehr synchron mit dir treffen" und "Ich warte nur, bis Bob fertig ist, bevor ich nach einem erneuten Pairing frage. Ich möchte nicht gesehen werden, wie ich ihn quäle."

Was die gepriesenen Vorteile angeht, so gibt es viele gängige Praktiken, mit denen diese auf einfachere und effektivere Weise erreicht werden

Ewan
quelle
2

Zwei leitende Entwickler zu einer "Schmerzprogrammierung" zu bewegen, wenn sie zuversichtlich sind, dass sie die Aufgabe erfüllen können, ist einer der größten Nachteile.

klm_
quelle