Techniken
Zwei Personen, ein Ziel
Eine Möglichkeit des Pair-Programmings ist es, sich gemeinsam mit einem:r Entwickler:in an einen (Remote-)Tisch zu setzen und ein Feature miteinander zu entwickeln. Die beiden überlegen sich wie die Arbeit am besten aufgeteilt werden kann, definieren bei Bedarf die benötigten Schnittstellen und entwickeln anschließend unabhängig voneinander auf das gemeinsame Ziel hin. Für diese Technik bietet sich das IntelliJ-Plugin “Code With Me” hervorragend an, da es den Programmierer:innen ermöglicht, gemeinsam in einer Entwicklungsumgebung zu arbeiten.
So kann Entwickler:in A direkt auf die Funktionalität zugreifen, die Entwickler:in B parallel programmiert, ohne dabei auf ein Versionsverwaltungstool zurückgreifen zu müssen. Ausreichende Kommunikation ist dabei äußerst hilfreich, um späteren (Schnittstellen-)Konflikten proaktiv entgegenzuwirken.
Driver-Navigator
Eine Vorgangsweise, um etwas Struktur ins Pair-Programming zu bekommen, ist die Driver-Navigator-Methode. Zwei oder mehr Entwickler:innen wechseln sich in ihren Rollen nach einem festgelegten Zeitintervall oder nach einem fertigen Feature/Test ab. Der Driver übernimmt das Steuer und schreibt den Code, spricht seine Gedanken während dem Coden laut aus und stellt offene Fragen in den Raum. Der Navigator füttert den Driver mit Ideen, schlägt Lösungsansätze vor und versucht einen Überblick über die Gesamtaufgabe zu behalten. Neben den zwei Hauptrollen gibt es auch noch den Tourist. Dieser kann Verbesserungsvorschläge einbringen, soll sich aber so gut wie möglich passiv verhalten.
Wissenstransfer (Senior mit Junior)
Einen sehr interessanten Ansatz für Pair Programming beschreibt Llewellyn Falco als “strong-style pair programming” [1]. Er definiert “strong-style pair programming” wie folgt: “In order for an idea to go from your head into the computer, it must go through someone else’s hands.” Der Navigator ist also bei diesem Ansatz viel erfahrener und vertrauter mit dem Setup oder der Aufgabe.
Der Driver hingegen ist ein Anfänger (hinsichtlich Programmiersprache, Tool, Code-Basis, …) . Die Rollen werden nicht gewechselt und der Navigator übernimmt nur das Anleiten des Drivers, schreibt aber selbst keinen Code. Hierbei ist es besonders wichtig, dass der Driver ausreichend Fragen stellt und auch selbstständig arbeitet. Der Navigator sollte keine Schritt-für-Schritt-Anleitung bereitstellen. Stark empfehlenswert ist im Anschluss an die gemeinsame Session die Gründe für die jeweilige Lösung intensiv zu diskutieren. Oft werden dadurch neue Lösungswege aufgezeigt und der Driver lernt andere Herangehensweisen kennen.