Pair-Programming

Was ist Pair-Programming?

Pair Programming oder Programmieren in Paaren ist eine zentrale Technik aus dem eXtreme Programming (XP). Beim Pair Programming sitzen zwei Entwickler gleichberechtigt an einem Rechner und arbeiten gemeinsam an einer Aufgabe. Die zwei Entwickler nehmen unterschiedliche Rollen ein, welche oft mit „Pilot“ und „Navigator“ bezeichnet werden. Der „Pilot“ schreibt den Code, während der „Navigator“ die Korrektheit des Codes und des Lösungsansatzes überwacht und parallel über Verbesserungen am Design nachdenkt. Weil beide Entwickler gleichberechtigt sind, gibt es keine feste Aufgabenteilung. Deshalb wechselt der „Pilot“ alle paar Minuten zum „Navigator“ und der „Navigator“ wird zum „Piloten“. Auch zwischen den Paaren werden die Partner kontinuierlich gewechselt. So wird sichergestellt, dass jedes Teammitglied alle Teile des Projektes kennenlernt.

Welche Vorteile bietet Pair-Programming?

  • Qualität der Software wird verbessert
  • Fehler werden früh erkannt
  • Mehr Spaß an der Arbeit
  • Wissen verbreitet sich im gesamten Team
  • Kommunikation im Team verbessert sich

Untersuchungen (siehe unten) zeigen, dass der Einsatz von Pair Programming die Qualität des Codes deutlich steigert. Dies liegt unter anderem am ständigen Codereview und dem sofortigen Feedback des „Navigators“. Gleichzeitig erhöhen sich die Entwicklungskosten nur minimal. Da Fehler umso teurer sind, je später sie entdeckt werden, können die Folgekosten erheblich minimiert werden. Außerdem zeigt sich, dass Entwickler durch Pair Programming mehr Spaß an der Arbeit haben. Sie lassen sich weniger von privaten Interessen ablenken und haben mehr Vertrauen in den fertigen Code. Der Wechsel zwischen den Paaren bewirkt außerdem, dass sich das Projektwissen im gesamten Team gleichmäßig verteilt und es weniger „Spezialisten“ gibt. Dadurch wird der sogenannte Truck-Faktor minimiert: Dieser gibt die Wahrscheinlichkeit an, mit der ein Projekt scheitert, wenn einer der Entwickler von einem Truck überfahren wird. Beim Pair Programming geben die erfahrenen Entwickler ihre Kenntnisse an die weniger erfahrenen weiter. Auch die Kommunikation im Team wird durch das kontinuierliche Wechseln der Paarungen stark verbessert.

Kann man auch ohne Pair-Programming agil sein?

Selbstverständlich kann man auch ohne Pair Programming agil vorgehen. Man muss dann allerdings bedenken, dass die oben beschriebenen Vorteile mit anderen Mitteln erreicht werden müssen. Dann sind z.B. konsequent Code-Reviews zur Qualitätssicherung durchzuführen und mehr Dokumentation zu erstellen, weil sonst Wissensinseln entstehen.

Tipps fürs Pair-Programming

Austausch

  • Formuliere deine Ideen in geeigneter Form, so dass dein Pair-Partner dir folgen kann
  • Frage nach, wenn du etwas nicht verstehst

Umfeld

  • Raum, in dem man andere nicht stört, wenn man sich beim Pairen austauscht: Großraumbüros sind dafür wenig geeignet, Büros mit bis zu 6 Entwicklern sind OK
  • sauberer Arbeitsplatz
  • ablenkende Programme schließen: Yammer, Twitter etc.
  • Whiteboard oder Flipchart in der Nähe und Notizblock am Tisch, um Ideen auszutauschen
  • Regelmäßige Pausen: effektives Pairen ist anstrengend

Werkzeuge

  • 2 Tastaturen, 2 Mäuse: ermöglicht einen fließenderen Übergang und geringere mentale Kosten für Kontextwechsel
  • 2 Monitore mit gleichem Bild: stellen sicher, dass beide gut sehen können
  • Geeignete Schriftgröße: besonders wichtig, wenn nur ein Monitor vorhanden ist

Vorgehen

  • Mach eine Liste von Dingen, die du später alleine machen willst: Nicht alle Aufgaben sind es wert im Pair gemacht zu werden.
  • TimeTimer (Eieruhr) mit festgelegter Zeit, nach der man eine Pause macht: ein Task noch fertig zu machen, wenn beide dafür sind, ist natürlich OK

Persönliche Einstellung

  • Kompromissbereitschaft
  • Kritikfähigkeit
  • sich selbst nicht zu ernst nehmen
  • keine falsche Scheu: "Du bist nicht so gut wie du hoffst, aber auch nicht so schlecht wie du befürchtest." (Ron Jeffries)

Unser Angebot zu Pair-Programming

  • Wir erstellen Individualsoftware mit Entwicklern, die im Pair Programming sehr erfahren sind.
  • Wir coachen und betreuen Ihre Entwicklerteams beim Pair Programming.
  • Wir bieten Schulungen über agile Vorgehensweisen inklusive Pair Programming.

Treten Sie mit uns in Kontakt.

Literatur

  1. Williams, Laurie: The Collaborative Software Processs, University of Utah, 2000.
  2. Nosek, John T.: The Case for Collaborative Programming, In: Communications of the ACM Vol. 41, Nr. 3, S. 105 - 108, 1998.