“What one programmer can do in one month, two programmers can do in two months.“ Fred Brooks
Viele Leute denken, dass man Programmierung einfach und in hohem Maße parallelisieren kann. Wenn die Entwickler am selben Projekt arbeiten, funktioniert diese Methodik allerdings nur zu Teilen. Selbstverständlich können bestimmte Bestandteile unabhängig voneinander entwickelt werden, allerdings gibt es auch häufig Abhängigkeiten zwischen den zu programmierenden Modulen. Insbesondere in agilen Sprints stellt sich die Frage, inwiefern eine hohe Parallelisierung sinnvoll ist, denn hier soll ja bewusst ein gemeinsames Ziel und Produktinkrement geschaffen werden.
Aus dem Extreme Programming (XP) hat sich die Methodik des Pair Programmings entwickelt, die mittlerweile häufig in agilen Softwareprojekten angewandt wird. Hierbei arbeiten zwei Entwickler gleichzeitig an einem Arbeitsplatz an einer Aufgabe und programmieren zusammen. Einer der Entwickler schreibt dabei den Code (“Driver“), und der andere Entwickler kontrolliert den Code, gibt Feedback und denkt aktiv über die Problemstellung nach (“Navigator“). Diese Rollen werden dann nach und nach rotiert.
Untersuchungen haben gezeigt, dass dadurch die Entwicklungskosten nur minimal steigen, weil durch das „Vier-Augen-Prinzip“ Fehler deutlich früher erkannt und behoben werden. In der Praxis lassen sich also durch das Pair Programming u. a. folgende Vorteile erzielen:
- geringe Fehlerquote,
- Zusammenarbeit und Kommunikation im Team wird gestärkt,
- Code-Qualität steigt,
- durch den gemeinsamen Austausch können Probleme bessergelöst werden,
- Wissen wird geteilt. Eine Weiterführung des Pair Programmings ist das sogenannte Mob Programming. Hierbei arbeitet ein gesamtes Team – der „Mob“ – an einer Coding-Aufgabe, wobei es wie beim Pair Programming einen Driver gibt, der an der Workstation sitzt und den Code eingibt. Die anderen Mitglieder übernehmen gemeinsam die Rolle des Navigators, entwickeln Lösungsvorschläge und diskutieren miteinander. Allerdings kennt das Mob Programming auch weitere Rollen, sodass neben dem Driver und Navigator auch folgende Rollen besetzt werden können:
- Designated Navigator: Moderiert die Diskussionen der anderen Navigatoren, sammelt Vorschläge und entscheidet, wenn die Vorschläge auseinander gehen
- Researcher: Übernimmt Forschungsaufgaben, die zur Lösung der Aufgabe hilfreich sein können
- Learner: Nimmt primär teil, um als Teil der Gruppe zu lernen und aktiv nachzufragen
- Timekeeper: Überwacht die Zeit und kümmert sich um den RollenwechselNeben den Vorteilen aus dem Pair Programming stärkt das Mob Programming vor allem auch die Teambindung, da hier noch mehr Mitglieder involviert sind.