Anstatt die ganze Zeit sklavisch zu paaren, verwenden wir die Paarbildung selektiv in unserem Team. Ich denke, es funktioniert am besten unter folgenden Umständen:
- Hochfahren brandneuer Teammitglieder für ein Projekt (anstatt sie alleine durch Dokumentation oder Code waten zu lassen).
- Wenn Junior- und Senior-Leute zusammenarbeiten (dies hilft, einige der Fähigkeiten und Tricks der erfahreneren Entwickler zu zeigen, und es ermöglicht den alten Hunden, manchmal neue Tricks zu lernen).
- Wenn jemand versucht, einen Defekt aufzuspüren, hilft es oft, ein Paar Augen zu verwenden.
Wann und warum sollte ein Pair-Programm verwendet werden?
Wann sollte eine Paarprogrammierung vermieden werden? Warum?
agile
pair-programming
Paddyslacker
quelle
quelle
Antworten:
Untersuchungen von Laurie Williams haben ergeben , dass die Paarprogrammierung in Industrieteams am besten funktioniert, wenn
Persönlich habe ich festgestellt, dass mein XP-Team durchschnittlich 60% unserer Entwicklungszeit für die Programmierung von Paaren verwendet. Der Rest der Zeit wird für die individuelle Entwicklung aufgewendet. Es ist nicht ungewöhnlich, sich zu paaren, um ein erstes Design zu erstellen, ein paar Stunden allein am Design zu arbeiten und dann wieder zusammen zu kommen, um knifflige oder schwierige Teile des Codes zu beenden.
Ich habe auch festgestellt, dass die Paarprogrammierung in Blöcken von ungefähr 1,5 bis 2,5 Stunden am effektivsten ist. Alles, was viel weniger ist, erfordert zu viel Overhead für die Einrichtung, während viel mehr und die Paare dazu neigen, mürrisch und müde zu werden. Cranky and tired bedeutet, dass Sie nicht gut kommunizieren und möglicherweise Fehler in das System eindringen.
quelle
Pair-Programmierung hat bei mir in sehr, sehr wenigen Situationen funktioniert.
Wo die Pair-Programmierung für mich fehlschlägt
quelle
Mein Team hat seit seiner Gründung, lange bevor ich dort gearbeitet habe, Pair-Programmierung im Rahmen eines meist "extremen Programmierens" durchgeführt. Die Paarprogrammierung ist der Standardzustand . Leute gehen nur dann wirklich singleton, wenn es eine ungerade Zahl gibt, oder gelegentlich für Ermittlungen, insbesondere wenn sie mit feindlichen Geräten herumspielen und versuchen, sie zum Laufen zu bringen.
"Junior / Senior" ist nicht der einzige Weg. "Intermediate / Junior" ist nützlich; Es hilft dem mittelschweren Mann, das Wissen, das er erlangt hat, zusammenzufassen, indem er ihn dazu zwingt, es jemand anderem mitzuteilen. "Intermediate / Intermediate" fordert zwei Personen heraus, die zusammenarbeiten, um ihr Wissen zu teilen, zu kommunizieren und als Teil eines Teams zu arbeiten. Und selbst wenn Sie zwei hochrangige Mitarbeiter haben, haben diese wahrscheinlich unterschiedliche Fachgebiete und können unterschiedliche Ansätze entwickeln. Die Aspekte des Wissensaustauschs enden nicht, wenn jemand ein Projekt nur vage "auf dem neuesten Stand" hält. Paarprogrammierung ist vielmehr der Inbegriff einer lernenden Organisation . Neue Techniken und Best Practices verbreiten sich schnell.
Paar Programmierung hilft auch , die Qualität des Codes (weniger Fehler) und die geistige Gesundheit des Codes zu halten (es ist nicht nur das tut , was er will, aber das tut , was es soll ... idealerweise ohne eine mehrwöchige Kaninchen- going down Loch, das das Falsche tut, oder zwei verschiedene richtige Dinge, die wild in Konflikt geraten). Das hilft den Programmierern, ihren Fokus zu behalten: Hier im Herzen des Silicon Valley, wo die 80-Stunden-Woche stattfindet, können wir nur 40 Stunden pro Woche arbeiten, weil wir acht Stunden pro Tag intensiv programmieren und die Dinge wechseln miteinander aus. (Wenn Sie länger Pair-Programmierung machen würden, würden Sie wahrscheinlich ausflippen. Oder zumindest ausbrennen.) Dies ist ideal für die Vereinbarkeit von Beruf und Familie und hilft Ihrem Unternehmen auch dann, wenn es auf eine schnelle Abwicklung ankommt (insbesondere bei geringer Latenz).
Es ist nicht alles, 100% Pfirsiche und Sahne; Ich stelle fest, dass die Paarprogrammierung gelegentlich ein Hindernis für die Anwendung intuitiver Gehirnprozesse darstellt, die bei bestimmten Problemen hilfreich sind. In letzter Zeit habe ich bei einer Memory-Leak-Aufgabe einige Zeit mit und ohne Paare verbracht. ohne eins fühlte ich mich freier, herumzuspielen und Experimente zu machen, ohne wirklich genau zu wissen, was ich gerade tat. Es gibt auch einige Vorteile, Singleton zu arbeiten, wenn man in der Lage ist, aus einer Laune heraus eine Tangente zu ziehen und bestimmte wilde Refactorings (die in der XP-Methodik geschätzt werden) durchzuführen.
Insgesamt überwiegen die Vorteile jedoch bei weitem die Kosten, und das Pairing hat sich für uns hervorragend bewährt: vom Start bis zur Akquisition durch ein größeres Unternehmen und unserer anschließenden Integration. (Apropos, die Paarprogrammierung hat uns geholfen, durch Expansion und trotz eines geringen Umsatzes eine Kontinuität der Kultur aufrechtzuerhalten.)
(Wir entwickeln eine Software-Appliance in Perl für einen Listenpreis von 4.000 bis 40.000 US-Dollar.)
quelle
Ich habe noch nie in einem "Pair Programming" -Aufbau gearbeitet und kann dennoch behaupten, Teil der drei von Ihnen aufgelisteten Umstände zu sein. Das erwähnte Szenario scheint eher "reguläres Programmieren" zu sein, mit Phasen der Hilfe / des Trainings. Haben wir das nicht alles getan, bevor "Paarprogrammieren" ins Leben gerufen wurde? Paarprogrammierung würde vermutlich einen engagierteren Ansatz erfordern, bei dem der Prozess des Teilens innerhalb eines Teams nicht aufhört, sobald Sie die unmittelbar bevorstehende Aufgabe oder das unmittelbar bevorstehende Problem angehen. Aber das ist es, was ich "denke" und nicht, was ich "weiß".
Persönlich für Pair Programming Ich würde gerne in einem Team arbeiten, in dem ich meine Kenntnisse lernen und teilen kann. Ein unausgewogenes Team, in dem jeder, mit dem Sie zusammenarbeiten, meilenweit vor Ihnen liegt oder weit unterdurchschnittlich ist, kann ziemlich schnell uninteressant werden. Außerdem würde ich Angst haben, mit Leuten zu arbeiten, die in ihren Glauben verstrickt und schwer zu überzeugen sind.
quelle
Wir haben in den letzten Monaten in unserem Team mit der Programmierung von Paaren experimentiert. Ich finde es ziemlich nützlich, wenn Sie an etwas Neuem arbeiten (neue Technologie, neue Funktion usw.), da Sie schnell Ideen mit einer anderen Person des Teams austauschen und validieren / ungültig machen können. Ein Peer Review nebeneinander hilft auch dabei, Fehler fernzuhalten.
Ein anderer Teamkollege hat versucht, eine Paarprogrammierung mit einem Test durchzuführen, um ATDD durchzuführen, und sie waren sehr zufrieden mit den Ergebnissen (nach seinen Berechnungen führte eine Erhöhung der Entwicklungskosten um 20% zu einer Verringerung der Testzeit um etwa 50%).
quelle
Gute Nacht
oft haben wir über Praktiken der extremen Programmierung und die Paarprogrammierung debattiert . Zurück in der Zeit können wir verstehen, dass das Programmieren eine Einzelaktivität ist, weil Programmierer Konzentration und Isolation benötigten. Die Programmierer befanden sich zu dieser Zeit in der Zone , einem mentalen Zustand, in dem sie sich effizient auf den Code konzentrieren und nette und kreative Entscheidungen treffen konnten.
Die Programmierung von Paaren scheint ebenfalls riskant zu sein, wenn Sie davon ausgehen, dass sich ein Programmierer gegenseitig unterbricht. Andererseits ist es schwieriger, zwei Programmierer, die zusammenarbeiten, zu unterbrechen. Bei der Solo-Programmierung zum Beispiel ist es einfacher, unterbrochen zu werden, so dass es für einen Solo-Programmierer fast unmöglich ist, in der "Zone" zu bleiben.
Die Codequalität ist eine andere, wenn die Deadline gleich um die Ecke ist. Die Leute werden es immer eilig haben, ein Paar Programmierer oder ein Solo Programmierer sein: Sie werden bestimmte Best Practices nicht anwenden und werden nur die Unit Tests vergessen.
Ich würde bei der Paarprogrammierung bleiben. Denn wenn es um Risiken geht und ein Programmierer weg ist, muss immer ein anderer den Prozess dokumentieren und allen anderen beibringen, wie er funktioniert.
quelle
Die Arbeit an etwas nicht-trivialer Komplexität ist in der Regel ein guter Kandidat für die Paarprogrammierung, sodass mehrere Personen den Code verstehen und nicht nur ein Entwickler einen Teil der Codebasis kennt. Ein anderer Fall ist, wenn jemand einige Fähigkeiten übertragen möchte. Ein Beispiel hierfür könnte sein, dass jemand, der wirklich gut in Unit-Tests ist, mit jemandem zusammenarbeitet, der mit dem Konzept nicht ganz so vertraut ist, und so dazu beiträgt, sich an etwas zu gewöhnen.
Wenn Sie vermeiden möchten, dass Paare programmiert werden, teilen Sie die Arbeit in zwei Gruppen auf, und lassen Sie jeden Entwickler einen Teil der Arbeit separat erledigen, um die Arbeit zu erledigen. Einige Aufgaben erfordern nur ein wenig Tipparbeit, sind aber nicht so umfangreich, dass es sich lohnt, ein paar Stunden zu verbringen, um einen besseren Weg zu finden, wie es möglich wäre, wenn jeder Entwickler für ein paar einen Brute-Force-Ansatz verfolgt Std.
quelle