Ich habe in einigen Läden gearbeitet, in denen das Management die Idee der Paarprogrammierung entweder an mich oder an einen anderen Manager / Entwickler weitergegeben hat, und ich komme überhaupt nicht dahinter. Vom Standpunkt eines Entwicklers aus kann ich keinen Grund finden, warum die Umstellung auf diesen Codierungsstil vorteilhaft wäre, und als Manager eines kleinen Teams habe ich keinen Nutzen gesehen.
Ich verstehe, dass es bei grundlegenden Syntaxfehlern hilft und hilfreich sein kann, wenn Sie etwas heraushacken müssen, aber Manager, die sich nicht in der Programmierschleife befinden, scheinen es immer wieder als eine Möglichkeit zu sehen, ihre Designer davon abzuhalten, zu Facebook oder Reddit zu wechseln, als zu ein Designwerkzeug.
Als jemand in der Nähe der Entwicklungsabteilung, der es anscheinend nicht ganz verstehen kann, aus einem Buch oder einer Wiki-Seite zu diesem Thema ... von einer Führungsposition auf hoher Ebene aus, was sind die Vorteile von Pair Programming im Umgang mit Scrum oder Agile Umgebungen?
quelle
Antworten:
Teilweise hängt es davon ab, wie Sie die Paarprogrammierung durchführen. In einigen Fällen schreibt der Treiber des Paares Code, während das zweite Mitglied des Paares die Entwurfs- und Implementierungsdetails des Systems beobachtet und diskutiert. Eine weitere Instanz der Paarprogrammierung besteht darin, dass beide Personen gleichzeitig Code schreiben. Eine Person schreibt die implementierte Funktionalität und die andere entwickelt und schreibt aktiv Testcode auf der Einheits- und Integrationsebene. Dabei werden wiederum die Entwurfs- und Implementierungsdetails des Systems erörtert.
Unabhängig von der Art der Paarprogrammierung dient es effektiv als kontinuierliche Codeüberprüfung . Der Code wird von zwei Personen überwacht, die auf Fehler achten, bevor sie in eine spätere System- / Abnahmetestumgebung oder in das Feld gelangen. Sie haben auch zwei Personen, die einen bestimmten Teil des Systems sehr gut verstehen, um als Redundanz zur Minimierung Ihres Busfaktors zu dienen . Sowohl das frühzeitige Erkennen von Fehlern als auch die Verbreitung von Systemwissen im Team reduzieren die Kosten für den Aufbau eines Systems.
Die Wissensverbreitung beschränkt sich nicht nur auf das Fachwissen des Teams. Je nachdem, um wen es sich bei dem Paar handelt, können Informationen zwischen einem älteren Mitglied des Unternehmens und einem neuen Mitglied über andere Dinge, die über das Projekt hinausgehen, übertragen werden - Codierungsstil, Unternehmenskultur, Erwartungen usw. Es kann auch jemandem, der mit einer Technologie oder einem Tool besser vertraut ist, ermöglichen, sein Wissen über diese Technologie oder dieses Tool in einer realitätsnahen Umgebung zu teilen.
Wie Sie bereits erwähnt haben, hilft dies auch dabei, die Entwickler fokussiert und im Fluss zu halten . Zusätzlich zum Fluss unterbrechen viele Personen mit geringerer Wahrscheinlichkeit mehrere Personen, die an etwas arbeiten, als eine einzelne Person, die an etwas arbeitet. Wenn Sie an einem Schreibtisch vorbeigehen und dieser alleine arbeitet, Sie aber mit ihm sprechen müssen, können Sie anklopfen und mit ihm sprechen. Dies ist weniger wahrscheinlich, wenn Sie zwei oder mehr Personen sehen, die zusammenarbeiten oder eine Diskussion führen - Sie werden sie nicht unterbrechen. Unterbrechungen kosten Zeit und mehr Zeit bedeutet höhere Kosten. Es ist im besten Interesse des Unternehmens, die Produktivität der Mitarbeiter zu maximieren.
Es gibt jedoch einige Herausforderungen, die überwunden werden müssen, um die Paarbildung durchführbar zu machen. Betrachten Sie Dinge wie Persönlichkeitskollisionen oder die Auswahl der Paare, um das Wissen richtig zu verteilen. Es gibt auch Überlegungen, wann Paare genau gedreht werden müssen. Zufällig vorgenommene Pair-Programmierung wird wahrscheinlich nicht effektiv sein, da dies geplant ist. Abhängig von der Zusammensetzung Ihres Teams ist es möglicherweise nicht effektiv, Personen zu verbinden.
quelle
Weniger Fehler im endgültigen Code (Effizienz)
Ersetzt Code-Reviews nicht vollständig, ist aber sehr effektiv, um die Dinge frühzeitig richtig zu machen. Es gibt Forschungsergebnisse, die in diese Richtung weisen.
Schnellere Fertigstellung (Wirksamkeit)
Es gibt mehrere Untersuchungen, die darauf hinweisen. Wenn es um komplexe Funktionen geht, sind 2 Köpfe einfach effektiver. Erfahrung im Pairing ist hierfür ein Muss.
(Hinweis: Dies ist Ihr Verkaufsargument für den Manager: Finanziell eine vernünftige Entscheidung, da Sie durch eine geringere Anzahl von Fehlern effizienter und durch eine schnellere Fertigstellung effektiver werden.)
Sie können einen Junior direkt zu einem erfahrenen Programmierer hinzufügen. Wenn Sie eine Gruppe absoluter Anfänger haben, ist es einfach, bei ihnen zu bleiben und sie paarweise die Grundlagen herausfinden zu lassen. Bleiben Sie dabei und geben Sie Ratschläge. Das Konzept ist anscheinend sehr alt und stammt aus der Handwerkskunst.
quelle
Schnelle Antwort: Die meisten Vorteile und Kosten werden in Wikipedia veröffentlicht veröffentlicht. Betrachten wir sie jedoch aus einem etwas anderen Blickwinkel.
Ich möchte spezifische Fälle von Paar Programmierung Vorteile erwähnen, die agile / Scrum - Entwicklungsumgebung anwenden, aus genommen Blog - Eintrag :
in Summe:
quelle
When two developers work together design pattern quality improves
-> dieser Satz ergibt überhaupt keinen Sinn. Zumindest nicht sinnvoller alsWhen two bakers work together wheat quality improves
oderWhen two race drivers work together asphalt quality improves
.Die Paarprogrammierung bietet einige Vorteile:
Wikipedia hat auch eine schöne Zusammenfassung der Kosten und Vorteile im Wiki-Eintrag .
quelle