Dev Host: Wissenstransfer durch Pair Programming

von Matthias Hampel
27.02.2019

Wir kennen es doch alle: Das Arbeiten in einem festen Projektteam birgt die Gefahr des Tunnelblicks. Nicht nach links oder rechts blicken zu können, geschweige denn über den Tellerrand hinaus. Um dieser Gefahr zu trotzen, haben wir bei Neoskop das Dev Host-Projekt ins Leben gerufen. Alle zwei Wochen werden zwei Entwickler aus verschiedenen Projektteams ausgelost um gemeinsam eine Aufgabe zu lösen. Die Idee: Entwickler H („Host“) stellt Entwickler D („Dev“) eine Aufgabe aus einem seiner Projekte.

Wir blicken über den Tellerrand hinaus.

Nachdem die beiden Entwickler in unserem Stand Up ausgelost wurden, verabreden sich diese selbstständig um eine Aufgabe zu lösen. Es spielt dabei keine Rolle, ob die Aufgabe eher im Frontend oder Backend angesiedelt ist und ob es sich um eine Programmiersprache, Technologie oder Bibliothek handelt, die dem Dev bereits bekannt ist. An dem ausgewählten Termin setzen sich die beiden Entwickler (Dev und Host) am Arbeitsplatz des Host zusammen und starten das Projekt gemeinsam anhand der Dokumentationen. Sollte es hierbei zu Problemen kommen, kann die Dokumentation des Projekts direkt erweitert und dokumentiert werden. Der Host erklärt dem Dev nun den engeren Rahmen der Aufgabe und zeigt, welche Codestellen bearbeitet werden müssen. Im Rahmen des Pair Programming arbeiten beide Entwickler zusammen an einer Lösung des Problems. Durch die gemeinsame Arbeit an einem Rechner, ist ein maximaler Wissenstransfer garantiert. 

Mitarbeiter schulen Mitarbeiter.

Durch dieses regelmäßige Projekt möchten wir erreichen, dass alle Entwickler einmal in andere Projekte reingeschnuppert haben und die Projekte anhand der Readme-Dateien auf ihren Notebooks aufsetzen und starten können. Zusätzlich kann der Dev die neuen Impulse in sein eigenes Projektteam einfließen lassen und innovative Lösungen fördern. 

Um auch die anderen Kollegen auf dem Laufenden zu halten, wird die gelöste Aufgabe im wöchentlichen Stand Up vor allen Neoskoplern (also nicht nur das Team) präsentiert. Die Aufgabenstellung wird dabei so erklärt, dass auch die Nicht-Entwickler und Nicht-Teammitglieder nachvollziehen können, welcher Aufgabe sich Dev und Host in der letzten Woche gewidmet haben. Die „Übersetzung“ für Nicht-Entwickler schult unsere Entwickler zum einen darin, technische Sachverhalte einfacher zu erklären und zum anderen, diese dann auch beim Kunden verständlich zu präsentieren. Anschließend werden die Ergebnisse vorgestellt und die technische Umsetzung präsentiert. Hier darf auch gerne Code gezeigt und erklärt werden. Das Stand Up endet mit einer kleinen Fragerunde.

Auch projektübergreifend Bestleistungen vollbringen.

Wir haben das Dev Host-Format im Frühjahr 2018 bei uns eingeführt und sind auch ein Jahr später immer noch begeistert. Der stetige projektübergreifende Austausch der Entwickler hat dazu geführt, dass unser Quelltext viel aufgeräumter und leserlicher geworden ist. Insbesondere Lücken oder Fehler in den Readme-Dateien konnten gefunden und gefüllt werden. Auch das Aufsetzen von „fremden“ Projekten geht nun deutlich schneller und einfacher von der Hand. Zudem erfolgt durch eine neutrale Begutachtung eines projektfremden Entwicklers eine ständige Weiterentwicklung und Verbesserung des Codes. Auch für zukünftige Projekte, die ein ähnliches Problem behandeln, wird sowohl für die zuständigen Projektmanager und Product Owner als auch für die Entwickler aufgezeigt, in welchen Teams Kompetenzen in diesem Bereich liegen. 

Wir freuen uns schon auf den nächsten Dev Host und sind gespannt, welcher Herausforderung sich unsere Kollegen dieses Mal gestellt haben!

Hintergrund: Pair-Programming als agile Methode in der Softwareentwicklung

Pair Programming ist eine zentrale Technik aus dem eXtreme Programming (XP) und hat sich besonders in Entwicklungsteams, die nach Scrum arbeiten, etabliert. Neben der testgetriebenen Entwicklung und kontinuierlichen Integration gehört es zu einer beliebten agilen Entwicklungspraktik. Statt Dev und Host spricht man im ursprünglichen Konzept von "Navigator" und "Pilot". Während der "Pilot" den Code schreibt, kontrolliert der "Navigator" diesen und denkt über Verbesserungsmöglichkeiten nach. Das führt im Optimalfall zu durchdachterem und lesbarerem Code. Ganz im Sinne des agilen Arbeitens sind beide gleichberechtigt und die Rollen sind nicht festgeschrieben.

In einem Scrum-Entwicklungsteam sind neben Frontend- und Backendentwicklern auch andere für das Produkt notwendigen Fähigkeiten vertreten, wie sie beispielsweise Designer und UX-Experten mitbringen. Pair Programming kann daher auch bei der Arbeit zwischen UX-Experte und Frontend-Entwickler oder auch zwischen mehreren Personen (als eine Art Mob Programming) genutzt werden. Denn letztendlich ist das gesamte Team am Ende eines jeden Entwicklungszyklus (Sprint-Review) für das lieferbare Produktinkrement (eine mit neuem Features ausgestattete Produktversion) verantwortlich und organisiert seine Arbeit und Arbeitsweisen selbst.

Wie erfolgreich Pair Programming im Endeffekt ist, ist abhängig von den Menschen, die zusammenarbeiten. Wie immer, spielen hier verschiedenste multidimensionale Faktoren einen Rolle, ob die Kommunikation erfolgreich ist oder nicht. Aber zum Glück gibt es dafür ja den Scrum Master, der im Zweifelsfall dafür sorgt, Hindernisse zu identifizieren und zu beseitigen :).

Du willst mehr über agile Softwarentwicklung erfahren?

Wie eine Schulung zum Produkt Owner eines Scrum-Teams abläuft, berichten Neoskop Projektmanager Jan-Christoph und Georg in ihrem Blogbeitrag "Lohnt sich eine Schulung zum Product Owner?". Falls Du dich für weitere agile Methoden und Frameworks interessierst, können wir Dir auch die anderen Coachings und Ausbildungen von it-agile sehr ans Herz legen.

Du suchst einen interessanten Job im Bereich Web-Entwicklung? Bewirb Dich jetzt!

Bitte gib uns in Deinem Anschreiben einen Hinweis auf das frühstmögliche Eintrittsdatum und Deine Gehaltsvorstellung. Außerdem freuen wir uns immer über Projektreferenzen.

Gundi Poppe
Gundi Poppe Human Resources +49 511 700 208 20