Wie häufig ist Pair Programming am Arbeitsplatz?

16

Ich war schon immer fasziniert von der Programmierung von Paaren, aber in 12 Jahren habe ich noch nie an einem Ort gearbeitet, an dem diese Praxis angewendet wurde. Daher war ich immer skeptisch, wie die Leute das sehen.

Ich frage mich, ob das an Geld / Zeit liegt (Spitzhaariger Chef, der zwei Leute an einem Computer entdeckt, die am selben Code arbeiten !!!! Wie können sie es wagen!) Oder aus anderen Gründen?

ozz
quelle
8
Ich denke, der PHB könnte in dieser Situation korrekt sein. Zwei Personen (und damit zwei Gehälter) für einen Output sind im Grunde genommen eine schlechte Geschäftsentscheidung. Es gibt nicht viele Fälle, in denen gepaarte Programmierung produktiver ist als einzelne, zumindest nicht "Vollzeit" - es wird also nur wenig getan, außer neue Mitarbeiter zu betreuen oder gemeinsam an einem bestimmten Problem zu arbeiten.
TZHX
3
Es ist sehr schwer, den spitzen Chef davon zu überzeugen, dass dies einen Wert hat.
Walter
3
Für neuen Code halte ich Paarprogrammierung für sehr wertvoll. Die erste Iteration kann dieselbe Zeit in Anspruch nehmen, aber IME verbringen Sie viel weniger Debug-Zeit. Und wenn zwei Personen denselben Code kennen, wird das Debuggen einfacher, da sie unabhängig voneinander zusammenarbeiten können. "Bei genügend Augäpfeln ist jeder Fehler transparent."
Michael K
1
@Michael, nicht immer, aber manchmal denke ich, das Pairing mit Legacy-Code kann nützlich sein. Es kann Silos zerstören und / oder Refactoring-Kosten senken. Trotzdem stimme ich Ihnen voll und ganz zu.
DevSolo
5
@TZHX: "Zwei Personen für eine Ausgabe sind ein schlechtes Geschäft". Das ist ein ernsthaft fehlerhaftes Argument und Sie wissen es (wie das Bezahlen von Programmierern pro Codezeile). Pair Programming ist ein komplexes Thema und sollte nicht so einfach gekündigt werden.
Martin Wickman

Antworten:

20

Ich habe den gleichen Auftritt seit 15 Jahren und wir haben vor kurzem (in den letzten 12 bis 18 Monaten) damit begonnen, agile Techniken anzuwenden. Wenn Paarprogrammierung verwendet wird, wurde die Ergebnisgeschichte / -funktion rechtzeitig mit weniger Fehlern implementiert. Ich glaube immer noch nicht, dass es oft genug eingesetzt wurde.

Vor unserer Einführung von Agile haben sich ein anderer Entwickler und ich über die Jahre hinweg gelegentlich die Tastatur geteilt (möglicherweise alle 3-4 Monate). Unser Management-Team zeigte sich zurückhaltend, war jedoch mit unserer informellen Paarung immer zufrieden, da es in der Regel einige der folgenden Punkte erfüllte:

  • Reduzierte Silos im Team (großer Gewinn, wenn das Team 6-8 Entwickler hat)
  • produzierter Code mit weniger Fehlern
  • Jeder Entwickler hat in der Regel seine Fähigkeiten daraus gelernt

Ich würde sagen, das Management ist zurückhaltend, aber wenn Sie kleine Schritte unternehmen und zeigen können, dass die Funktion später besser ist (Kosteneinsparungen) und / oder jeder (oder ein) Entwickler einige Fähigkeiten erworben hat (Vorauszahlung), können Sie Dampf holen, wenn Sie finden es eine Praxis, die zu Ihnen oder Ihrem Team passt.

DevSolo
quelle
toller Einblick DevSolo, danke fürs Teilen. Ich vermute, Sie haben wahrscheinlich ein ziemlich stabiles Team (geringe Fluktuation?)
ozz
Bitte schön. Unser Umsatz war ziemlich niedrig ... 4 von uns teilen sich seit mehr als 15 Jahren das gleiche Büro, obwohl 4 Umzüge (über 4 Gebäude und 2 Bundesstaaten)!
DevSolo
Ironischerweise ist dein Alias ​​'DevSolo';) nb meine Erfahrungen stimmen mit
deinen
11

Ich vermute, dass es wahrscheinlich viele Widerstände von den Entwicklern geben wird. Erinnern Sie sich, dass Sie gezwungen waren, mit Menschen zu arbeiten, die vielleicht nicht die motiviertesten Menschen der Welt waren, während Sie studierten oder sogar in der High School waren? Diese Leute existieren immer noch. Solange Sie kein Team haben, das sich aus erstklassigen Mitarbeitern zusammensetzt, wird diese Art der Aufstellung in der Gruppe einige Feindseligkeiten hervorrufen.

Pemdas
quelle
Sehr wahr Pemdas!
ozz
2
+1 leider. Teamwork ist eine Fähigkeit, die Sie entwickeln müssen, und wenn Sie nicht möchten, können Sie nicht. Vielleicht sollten Manager von Programmierern genau das tun - die Teamstruktur finden, die die höchste Produktivität bei den Mitarbeitern fördert, die sie haben.
Michael K
4
Dieser Beruf erfordert, das Ego in Schach zu halten. Es ist nicht immer einfach, aber die Belohnungen werden äußerst vorteilhaft sein.
DevSolo
@ DevSole ... was hat das mit meiner Antwort genau zu tun?
Pemdas
@Perndas, ich habe vielleicht fälschlicherweise angenommen, dass der Widerstand auf Egos zurückzuführen wäre. Zumindest wenn ich es gesehen habe, scheint das der Grund zu sein. Ich habe nur 2 (an die ich mich erinnere) Entwickler gesehen, die sich dem widersetzen. Das eine Ego passte nicht in den Raum, das andere hatte Probleme mit Zuversicht.
DevSolo
9

Ich habe es offiziell noch nicht gemacht, aber wenn ich nicht weiterkomme, rufe ich einen Entwickler an und wir arbeiten beide gemeinsam an einer Lösung. Es ist eine großartige Möglichkeit, Ideen zu verbreiten. Lassen Sie eine Person überlegen, während die andere sie umsetzt, damit Sie nicht den Überblick verlieren, weil Sie sie abtippen.

Ich wünschte, es wäre mehr getan.

CaffGeek
quelle
4
Ein anderes Werkzeug, das Sie verwenden sollten, wenn Sie nicht vertraut sind, heißt "Rubber Ducking". Stellen Sie im Grunde genommen einen Gegenstand wie eine Gummiente auf Ihren Schreibtisch (Ihr benutzt wirklich ein Spielzeug Yoda) und erklären Sie ihm das Problem. siehe c2.com/cgi/wiki?RubberDucking
DevSolo
Ich benutze stattdessen die Person, die neben mir sitzt ... wir können nichts auf unsere Schreibtische legen.
CaffGeek
Ernsthaft?
Michael K
@Michael ... du hast keine Ahnung, welche Regeln wir hier haben. Und doch überwiegen die wenigen guten Dinge die schlechten ... kaum.
CaffGeek
Es ist traurig zu hören, dass diese unvernünftige Regelverwaltung für die Programmierer gilt (Das ist ziemlich dumm,
findest
9

Ich interessiere mich nicht dafür:

1 - Ich höre meine Musik gerne beim Codieren. Nicht jeder möchte Slayer in die Ohren sprengen hören.

2 - Ich bin darüber aufgewachsen, dass es sehr unhöflich und unangenehm ist, den Leuten über die Schulter zu schauen, wenn sie es tun.

3 - Ich denke sehr schnell und wenn ich mich auf einem Lösungsweg befinde und eine Antwort zu finden beginne, ist es das allerletzte, was ich brauche, unterbrochen zu werden.

4 - Ich kann keine gelegentlichen Pausen einlegen, um Foren und Newsgroups zu lesen. Einige mögen es trotzdem für unangemessen halten, aber ich finde es sehr wichtig für meine weitere Verbesserung. Gelegentlich lenke ich mich zu sehr ab, aber im Allgemeinen überwiegt der Vorteil meines erweiterten Wissens die Auswirkungen auf meine Produktivität.

Ich nehme an, dass es in anderen Teams anders sein könnte, aber die wenigen Male, in denen ich tatsächlich von etwas überrascht bin und Hilfe brauche, bin ich fast immer derjenige, der irgendwann auf die Lösung kommt. Ich bin wirklich gut in dem, was ich tue, aber ich denke, es geht vielleicht noch mehr ... Ich bin mir nicht sicher, auf jeden Fall finde ich, dass es mir besser geht, nur die schwierigen Probleme zu lösen und es im Allgemeinen besser ist, es alleine zu tun. Könnte arrogant klingen, aber das macht es nicht falsch.

Ich habe überlegt, dass es anderen helfen könnte, einige meiner Techniken zu erlernen, aber unter Berücksichtigung von Nummer 3 wären sie kaum in der Lage, Fragen zu stellen, ohne meinen Gedankengang zu unterbrechen.

Trotzdem habe ich es von Zeit zu Zeit versucht. Manchmal hat es geringfügige Vorteile, aber ich kann es mit Sicherheit nicht als eine beständige Sache sehen. Das Lone-Wolf-System funktioniert für mich und es scheint für das Team zu funktionieren.

Edward Strange
quelle
2
@Noah, nur basierend auf # 2, ich bin mir nicht sicher, ob Sie das Konzept der Paarprogrammierung verstehen. Die Idee ist nicht, über die Schulter zu schauen. Die Idee ist, wie ich es geübt habe, den PC gemeinsam zu nutzen, um zusammenzuarbeiten. Es ist keine Master / Slave-Programmierung, sondern Peer-Programmierung. Vielleicht ist der spätere eine bessere Bezeichnung dafür ...
DevSolo
Das ist völlig richtig. Einige Leute wollen einfach in Ruhe gelassen werden, um es selbst herauszufinden.
MattC
Und auch +1 für die Kopfhörersache. Ich jage den ganzen Tag Metal und / oder Trance und ärgere mich ziemlich, wenn Leute mit mir über Sachen reden. Können sie nicht warten, bis mein Lieblingslied vorbei ist? : D
MattC
2
@Noah: Wenn Sie Ihre Liste lesen, scheinen Ihnen die Feinheiten der Paarprogrammierung zu fehlen. Ich sage nicht, dass es für jedermann ist, und es braucht sicherlich Zeit und Mühe, vom Cowboy-Modus in den Sharing-Modus zu wechseln. Genauso wie es Zeit braucht, um zu lernen, wie man TDD richtig macht (oder irgendeine andere agile Praxis in dieser Angelegenheit).
Martin Wickman
1
Fortsetzung ...: "senior" bedeutet, dass Sie möglicherweise nicht derjenige sind, der den Code ausführt, sondern einem jüngeren Entwickler einen Vorschlag unterbreiten. Ich bin auch nicht der größte Fan der Idee der Paarprogrammierung, aber ich sehe, dass es wahrscheinlich größtenteils außerhalb meiner Komfortzone liegt. Viele Entwickler arbeiten gerne alleine an ihrer Station, aber ich muss zugeben, dass ich wahrscheinlich mehr lernen und bessere Lösungen finden würde, wenn ich mit einem anderen Entwickler zusammenarbeite. Es ist also wirklich eine Frage des persönlichen Komforts und der Effektivität der Arbeit.
Anne Schuessler
5

Paarprogrammierung ist eine großartige Möglichkeit, etwas Nicht-Triviales und Schwieriges zu beginnen oder zu tun. Mehr Routine und einfache Aufgaben lassen sich besser alleine erledigen.

Ich habe an einer Reihe von Sessions zur Paarprogrammierung teilgenommen, sowohl in Start-up / Garage-Unternehmen als auch in großen Unternehmen. Es geschah immer nur, wenn etwas Neues und Schwieriges in Angriff genommen wurde, das heißt, höchstens zweimal im Jahr für einige Wochen. Wie oft passiert das in Ihrem Unternehmen?

9000
quelle
seltener als ich es gerne hätte, das ist sicher.
ozz
5

Wir haben es nie so genannt, aber damals haben wir immer neue Probleme angegriffen. Wir haben uns zusammengetan, um mit einer Lösung zu beginnen, brechen dann aber in der Regel auf, um die Details einzeln fertigzustellen / zu bereinigen. Nicht mehr so ​​viel. Scheint immer seltener zu werden.

Brian Knoblauch
quelle
3

Nicht sehr häufig. In all den Läden, in denen ich in den letzten 10+ Jahren war, habe ich es einmal gesehen. Am langsamsten und am wenigsten effizienten Laden. Es scheint eine laute und stressige Umgebung zu schaffen. Eine Person fährt und redet ständig und hindert die andere daran, überhaupt zu denken.

Bringen Sie das Team zu Code-Reviews zusammen, sei es in Gruppen oder zu zweit, und geben Sie den Entwicklern ihren eigenen Raum. Auf lange Sicht ist es besser, als der neuesten Modeerscheinung von Agile hinterherzulaufen.

Servius
quelle