Context: Pair programming is a common agile software development practice. It means that two developers sit in front of one computer, working on the same task. They share their thoughts and jointly work out the solution. Another present trend in the software industry is global software development, where teams work on a project but from different locations around the world. Regarding the physical closeness of the individuals, both approaches are diametral. Motivation: Although the close collaboration of pair programming and the distance of distributed teams appear to be incompatible, the biggest challenges of virtual teams are strongly encouraged by pair programming: communication, trust, and knowledge transfer. Thus, a crucial question is whether and how distributed teams can profit from pair programming by doing distributed pair programming. The little research in that field has been conducted in university contexts, and mostly focused on comparing the efficiency of pair programming and distributed pair programming. However, a consistent picture could not yet be drawn in that regard. Moreover, they have mostly utilized technical means that limited the participants’ interaction possibilities. Objective: This study is groundwork for establishing an understanding of how distributed pair program- ming of professional developers looks like when using a dedicated tool. Such a tool facilitates equal interaction possibilities for both participants, enabling them to separately browse their workspaces. This in turn bears the risk that they visually and mentally decouple, thereby thwarting the principles of pair programming. Accordingly, the overarching research goal is to sensitize participants to beneficial con- textual conditions and behavioral patterns that avoid decoupling and other obstacles during distributed pair programming. This work is a first step towards that goal. Method: This dissertation is a single-case study using elements of Grounded Theory methodology to conceptualize observations of a pair of professional software developers that used a dedicated tool for distributed pair programming called Saros. Results: The surprisingly positive findings show that, contrary to popular opinion, distributed pair programming can work well. The flexible interaction possibilities facilitated by a dedicated tool led to new, subtle interactions of the pair that had positive effects on the collaboration process and that usually are not possible in pair programming that unobtrusively. First of all, these new interaction phenomena are conceptualized and described. Furthermore, personality traits, behaviors, and circumstances that appeared to be relevant for distributed pair programming are discussed. Finally, the results raised new research questions like whether distributed pair programming is a better form of pair programming or whether the expressiveness of source code can be considered a ‘magic’ basis for remote interaction. Apart from the above, this work tries to encourage tool evaluation for distributed collaboration from a different perspective. Often, the yardstick for evaluating tools of remote collaboration is their degree of imitating the classical, non-distributed situation. This involves the risk of not adequately addressing the complexity of the new situation in the distributed setting with its own and new interaction channels and dynamics and thus not to discover their individual potential. In light of this, the results of my research show that distributed pair programming is a different work mode to just doing pair programming in a distributed fashion.
Kontext: Paarprogrammierung (engl. pair programming (PP)) ist eine verbreitete Praktik der agilen Softwareentwicklung, bei der zwei Programmierer gemeinsam an einem Computer an einer Aufgabe arbeiten – sie teilen sich ihre Gedanken mit und erarbeiten gemeinsam die Problemlösung. Ein weiterer gegenwärtiger Trend in der Softwareindustrie ist global verteilte Softwareentwicklung (engl. global software development (GSD)), bei der Teams von unterschiedlichen Standorten aus zusammen an einem Projekt arbeiten. Unter dem Aspekt der Nähe der Beteiligten Personen sind beide Ansätze diametral. Motivation: Obwohl die enge Zusammenarbeit bei der Paarprogrammierung und die Entfernung der verteilten Teams konträr erscheinen, adressiert die Paarprogrammierung doch genau die größten Probleme von globaler Softwareentwicklung: Kommunikation, Vertrauen und Wissenstransfer. Eine wesentliche Frage ist daher, ob und wie verteilte Teams von den Vorteilen der Paarprogrammierung profitieren können, indem sie verteilte Paarprogrammierung machen (engl. distributed pair programming (DPP)). Die wenige Forschung in diesem Bereich wurde im universitären Umfeld durchgeführt und konzentrierte sich hauptsächlich auf die Frage der Effizienz von verteilter Paarprogrammierung im Vergleich zu klassischer Paarprogrammierung. Bislang konnten diesbezüglich jedoch keine konsistenten Aussagen getroffen werden. Auch wurden für die Durchführung der Studien weitgehend technische Hilfsmittel verwendet, die die Interaktionsmöglichkeiten der Teilnehmer stark beschränkten. Zielsetzung: Diese Arbeit ist Grundlagenforschung, um ein Verständnis dafür zu entwickeln, wie die verteilte Paarprogrammierung bei professionellen Softwareentwicklern funktioniert, wenn sie ein dediziertes Tool dafür nutzen. Mit einem Tool dieser Art sind sie in ihrer Interaktion gleichberechtigt und können sich unabhängig voneinander in ihren Arbeitsbereichen bewegen. Dies wiederum birgt das Risiko, dass sich die beiden auch visuell und mental entkoppeln können. Dies würde jedoch die Prinzipien der Paarprogrammierung konterkarieren und damit deren Vorteile, die sich aus der Gedankensynthese bei der Problemlösung ergeben. Das übergeordnete Forschungsziel dieser Arbeit ist daher, virtuelle Teams für Verhaltensweisen und Kontextbedingungen zu sensibilisieren, die Entkopplung und andere Prozessprobleme bei der verteilten Paarprogrammierung vermeiden helfen. Diese Arbeit ist ein erster Schritt im Hinblick auf dieses Ziel. Methode: Die vorliegende Studie ist eine Einzellfall-Analyse. Sie basiert auf Beobachtungen eines Paares professioneller Softwareentwickler, die mittels eines dedizierten Tools für die verteilte Softwa- reentwicklung, Saros, zusammen gearbeitet haben. Unter Zuhilfenahme von Elementen der Grounded Theory methodology (GTM) wurden aus den konkreten Beobachtungen Konzepte gebildet. Ergebnisse: Die überraschend positiven Ergebnisse zeigen, dass, entgegen der verbreiteten Ansicht, verteilte Paarprogrammierung sehr gut funktionieren kann. Die flexiblen Interaktionsmöglichkeiten, die ein dediziertes Tool bietet, führten zu neuen, subtilen Interaktionen des Paares. Diese wirkten sich positiv auf den Prozess aus und sind in dieser Dezenz bei der klassischen Paarprogrammierung oft nicht möglich. Diese neuen Interaktionsweisen werden in dieser Arbeit zunächst konzeptualisiert und beschrieben. Darüber hinaus werden Persönlichkeitseigenschaften, Verhaltensweisen und Kontextfaktoren beschrieben, die für eine gute verteilte Paargrogrammierung als relevant erkannt wurden. Die vorliegenden Ergebnisse führten wiederum zu neuen Forschungsfragen, wie beispielsweise ob verteilte Paarprogrammierung die bessere Paarprogrammierung ist oder ob die Ausdruckskraft von Quell- code eine ‘magische’ Basis für die verteilte Kollaboration ist. Auch möchte diese Arbeit den Impuls geben, Werkzeuge für die verteilte Zusammenarbeit aus einem anderen Blickwinkel als bisher zu evaluieren. Bislang ist der Maßstab für die Bewertung eines Tools für die verteilte Zusammenarbeit dessen Grad an Nachahmung der klassischen, nicht verteilten Situation. Dies birgt jedoch die Gefahr, nicht der Komplexität der neuen, verteilten Situation mit neuen Interaktionskanälen und Dynamiken gerecht zu werden und deren Potential zu entdecken. Unter diesem Aspekt zeigen die Ergebnisse dieser Arbeit, dass die verteilte Paarprogrammierung etwas anderes ist als nur Paarprogrammierung mit verteilt sitzenden Teilnehmern.