Paarprogrammierung ist eine umstrittene Praktik, obwohl die Vorteile wie höhere Entwicklungsgeschwindigkeit, höhere Codequalität und ein besseres Codedesign plausibel sind. Anekdotische Berichte zeichnen ein sehr positives Bild der Paarprogrammierung (PP), wohingegen kontrollierte Experimente ein äußerst inhomogenes Bild aufzeigen, insbesondere die quantitativen Studien. Qualitative Studien, die ganzheitliche Erklärungsversuche der Paarprogrammierung anstreben, gibt es kaum. Die Arbeitsgruppe Software Engineering verfolgt eben eine ganzheitliche Erklärung der der PP unterliegenden Prozesse. Das langfristige Forschungsziel ist es Verhaltensmuster zu entdecken, die einen positiven Effekt auf die Effizienz von PP-Sitzungen haben, ähnlich wie Programmdesign durch Entwurfsmuster erlernbar wird. Diese Masterarbeit gliedert sich also in die aktuelle Forschung der AGSE ein und sollte einen Aspekt der PP erleuchten, der auch Forschungsgegenstand eines derzeitigen Promotionsvorhabens ist: der Wissenstransfer in der PP. Da es sich bei dieser Arbeit jedoch lediglich um eine Masterarbeit handelt, kann diese nur einen Teilaspekt beleuchten, nämlich die gemeinsame Produktion von Wissen während einer PP-Sitzung. Die Forschungsfrage war also die folgende:
Wie produzieren Paarprogrammierer gemeinsam Wissen?Das Datenmaterial das meiner Arbeit zu Grunde liegt sind Videomitschnitte von Paarprogrammierungssitzungen. Es handelt sich um reale Mitschnitte von professionellen Softwareentwicklern aus mittelständischen deutschen Softwareunternehmen, die an realen Aufgaben arbeiten also solchen die sie ohnehin hätten bearbeiten müssen.
Die gewählte Methodik ist die Grounded Theory Method nach Anselm Strauss und Juliet Corbin (1990). Bei der GTM handelt es sich um eine Alternative zum sequentiellen Forschungsprozess der zumeist aus Hypothesengenerierung, Methodenprüfung, Datenerhebung, Datenauswertung und Verifikation bzw. Falsifikation der Hypothese(n) besteht. Der Grundsatz der GTM ist, dass alle gemachten Aussagen ausschließlich in den untersuchten Daten verankert sind, woher auch die Namensgebung grounded kommt. Das Verfahren der GTM ist nicht dafür konzipiert um eine vorhandene Theorie zu verifizieren, vielmehr geht es bei Anwendung der GTM darum zu identifizieren, welche Konzepte und Hypothesen für den Bereich, den man untersuchen möchte, überhaupt relevant sind. Der Prozess der Datenanalyse (der sogenannte Kodierungsprozess) unterteilt sich in drei nicht sequentiell zu durchlaufende Phasen auch Arbeitsmodi genannt.
Mit der Basisschicht (BS) sollte eine Sprache über die PP geschaffen werden, die in möglichst vielen nachfolgenden qualitativen Untersuchungen der PP verwendet werden kann. Die Basisschicht ist also ein Rahmenwerk für die qualitative Paarprogrammierungsforschung, damit weiterführende Studien (so wie die meinige) nicht bei null anfangen müssen, sondern im bildlichen Sinne auf dieses Fundament aufbauen können. Die BS zielt darauf ab die grundlegenden Vorgänge, aus denen der Paarprogrammierungsprozess zusammengesetzt ist zu formulieren.
Weitere qualitative Studien der AGSE zum Wissenstransfer kamen zu dem Ergebnis, dass es zwei dominante Arbeitsmodi während PP-Sitzungen zu gibt. Diese sind Knowledge Transfer (Wissenstransfer) und Decision Making (das Treffen von Entscheidungen). Darüber hinaus wurde festgestellt, dass Wissenstransfer 35% der Zeit einer PP- Sitzung ausmacht. Ferner zeichneten sich drei Modi für Phasen in denen Wissenstransfer stattfindet ab, diese wurden PUSH, PULL und PRODUCE genannt. In PRODUCE-Phasen wird neues Wissen von beiden Entwicklern on the fly erzeugt. Eben diese Episoden standen im Fokus der vorliegenden Arbeit.
Es wurden vier Klassen von Konzepten gefunden: Problembild-Äußerungen, Lösungsbild-Äußerungen, Relevanz-Äußerungen und TOPIC-Veränderungen.
Problembild-Äußerungen wurden als verbale Äußerungen eines Entwicklers definiert, die ein Hindernis für das Voranschreiten im Prozess darstellen. Diese konnten im Verlauf der Arbeit untergliedert werden in effektive Problembild-Äußerungen also solche die ein bereits zu Tage getretenes Problem adressieren und potentielle Problembild-Äußerungen, die ein Problem adressieren, dessen Auftreten noch nicht sicher ist. Lösungsbild-Äußerungen wurden als solche verbalen Äußerungen eines Entwicklers des Paares definiert, die eine Lösungs(-idee) eines zuvor geäußerten Problembilds referenzieren. Diese wurden im Verlauf der Arbeit unterteilt in solche die eine konkrete Lösung vorschlagen und solche, die ein Szenario skizzieren. Als Relevanz-Äußerungen wurden verbale Äußerungen eines Entwicklers definiert, die die persönliche Relevanzeinschätzung bezüglich des aktuell besprochenen Themas angeben. Diese wurden untergliedert in solche die dem aktuellen Thema eine hohe Relevanz zuweisen und solche, die diesem eine niedrige Relevanz geben. Zuletzt wurden TOPIC-Veränderungen als verbale Äußerungen die das aktuell besprochene Thema verändern definiert. TOPIC-Veränderungen wurden in solche unterteilt, die die Extension (also den Umfang aller Dinge, die das aktuell besprochene Thema referenzieren könnte) verringern, also einen thematischen Fokus legen und in solche die die Extension vergrößern, thematisch also zu einer Divergenz führen.Da an Hand dieser vier Konzeptkategorien ein grobes Verständnis davon vorlag wie PP-Partner gemeinsam Wissen produzieren ist eine weitere offene Frage der ich mich annehmen wollte die folgende:
Produziert das Paar das neue Wissen systematisch? Und falls ja, wie genau?Dazu war es zunächst naheliegend ein Problem zu konzeptualisieren und dann die Abarbeitung dieses Problems zu verfolgen, um eventuell einen musterhaften Ablauf erkennen zu können. Um ein Problem zu konzeptualisieren kam mir schnell der Gedanke dies als Baum (im mathematischen Sinne) zu tun. Dieser Ansatz wurde jedoch auf Grund mangelnder Datenverankerung fallen gelassen. Stattdessen wurden Passagen des Datenmaterials nach dem von Salinger vorgeschlagenen Schema transkribiert. Auf dieser Grundlage wurde Diagramme angefertigt, die den thematischen Gesprächsverlauf dieser transkribierten Passagen zeigen. Zum weiteren Erkenntnisgewinn wurden diese thematischen Gesprächsverläufe kategorisiert um ähnliche Äußerungen zu einer gemeinsamen Gruppe zuzuordnen. Es wurden mehrere Kriterien angegeben, an Hand derer sich diese kategorisierten Themenverläufe untersuchen ließen angegeben. Auf Grund der zeitlichen Beschränkung konnte jedoch lediglich einer dieser Ansatzpunkte verfolgt werden. Schlussendlich konnte in der Arbeit ein musterhafter Gesprächsverlauf von einem weniger vorteilhaft scheinenden Gesprächsverlauf unterschieden werden.
Da es sich bei den Ergebnissen um Ergebnisse einer qualitativen Forschungsmethode handelt, können hier nicht einfach die Maßstäbe quantitativer Forschung übernommen werden. P. Mayring gibt für die Beurteilung qualitativer Forschung sechs allgemeine Gütekriterien an. Diese wurden in der Arbeit diskutiert. Zusammenfassend kann gesagt werden, dass die Verfahrensdokumentation und die Regelgeleitetheit ausführlich dargestellt wurden. Die Interpretationsabsicherung wurde durch Bezugnahme auf die Basisschicht durchgeführt. Die Nähe zum Forschungsgegenstand ist als groß zu beurteilen, da das Datenmaterial reale PP-Sitzungen aus mittelständischen deutschen Softwareunternehmen zeigen. Lediglich die kommunikative Validierung in die Triangulierung konnten auf Grund des zu großen Zeitaufwands im Rahmen einer Masterarbeit nicht durchgeführt werden.
Die dargelegten Konzepte sind eine Beschreibung der gemeinsamen Wissensproduktion in der Paarprogrammierung auf hoher konzeptioneller Ebene. Die Erkenntnisse dieser Arbeit sind nicht alleine für den Softwareprozess Extreme Programming von Bedeutung, sondern vielmehr für alle agilen Prozesse. Darüber hinaus sogar nicht nur für agile Prozesse, denn im Kern geht es bei Paarprogrammierung ja um das gemeinsame Arbeiten an Softwareartefakten in Zweiergruppen. Anekdotische Berichte weisen darauf hin, dass PP-Konstellationen wesentlich häufiger auftreten, als in explizit geplanten Sitzungen, beispielsweise wenn ein Mitarbeiter seinen Kollegen zu einer spezifischen Stelle im Programmcode etwas fragt und der Kollege sich kurz dazusetzt.
In der vorliegenden Arbeit konnte ein Vorgehen aufgezeigt werden, dass ein erkennbar systematisches Problemlösen von einem scheinbar unsystematischen Vorgehen unterscheiden kann. Ein offen gebliebener Aspekt dieser Betrachtung der sicherlich weitere Aufmerksamkeit verdient ist, ob man innerhalb der systematischen Vorgehensweisen nicht doch algorithmische Vorgehensweisen erkennen kann wie in etwa eine Breiten- oder Tiefensuche. Ein weiterer in meiner Arbeit angesprochener Aspekt der ebenfalls mehr Aufmerksamkeit verdient als im Rahmen meiner Arbeit möglich war, sind die angeführten weiteren Aspekte nach denen man die vorgestellten Diagramme untersuchen könnte. Insbesondere die Untersuchung ob thematische Veränderungen während einer gemeinsamen Wissensproduktionsphase einem Unteraufruf einer Funktion entsprechen, oder ob vermeintlich weniger systematisch thematisch zurückgesprungen wird, erscheint mir aussichtsreich um die Systematik mit der Paarprogrammierer gemeinsam Wissen produzieren tiefer- gehend verstehen zu können.