flowerp schreef op zondag 04 juni 2006 @ 14:03:
Als je samen achter de computer zit heb je altijd zo'n drang om een dialoog open te houden. Dingen moeten 'meteen' gedaan worden want alles 'duurt te lang'. Als ik in m'n eentje ben staar ik eens 5 minuten naar buiten, of step ik eens rustig door wat source heen. Als er iemand naast je zit (wat we soms wel eens doen) doe je dat niet, want je wilt de ander niet ophouden.
Dit maakt het werk wel een stuk efficienter

. Het is ook meteen het gevaar, want je bent veel intensiever bezig, en moet dus bewust af en toe pauze houden. Normaal betrap ik me er ook vaak op dat ik eigenlijk alleen voor de lunch pauzeer, maar met Pair Programming is dat niet vol te houden en moet je echt (bijvoorbeeld) ieder uur minimaal 5 minuten 'afkoelen'. Even koffie/thee halen, gewoon wat rondlopen, of bijvoorbeeld even je email checken.
Ik denk dat het een (beetje) verschil van definitie is. Voor mij is 'programmeren' het hele proces dat ontwerp, implementatie en testen omvat. Het is bijna nooit zo dat ik een design zie dat zo ver uitgewerkt is dat de implementatie triviaal is. Juist bij de implementatie kom ik vaak dingen tegen die eerder over het hoofd gezien waren, of die beter kunnen dan gedacht.
Natuurlijk gaat het bij Pair Programming niet om alleen de implementatie samen te doen als er een 'perfect' design klaar ligt. Je moet het in meer of mindere mate in alle stadia toepassen, en voor echt triviale dingen (wat je 'uitcoderen' noemt veronderstel ik) inderdaad liever niet - want dan levert het te weinig op. Wellicht is een naam die men beter begrijpt ook 'Pair Working', om verwarring te voorkomen.
Anderhalf jaar geleden heb ik een pilot opgestart op mijn toenmalige werkplek, waarbij we met drie man een deelproject op deze manier aangepakt hebben. We wisten dat het niet 100% van de tijd nuttig zou zijn, maar om een goed beeld te kunnen vormen hebben we activiteiten waarvan we niet zeker wisten of het positief of negatief zou uitpakken wel met Pair Programming gedaan. Daardoor konden we achteraf beter inzien hoe het werkt. Uiteindelijk is het ons allemaal heel goed bevallen. We hebben geen harde cijfers kunnen verzamelen (er is natuurlijk nooit een situatie om goed mee te vergelijken) maar onze indruk was wel:
* Plezierige manier van werken
* Betere code (betere designkeuzes, minder fouten)
* Voor triviale code kost het meer tijd
* Je leert van elkaar (kennisspreiding, risicoverlaging)
* Meer gefocusseerd op het werk
Bij de pilot was kennisspreiding ook een belangrijke wens (vooral om te voorkomen dat bij uitval van personeel bepaalde kennis verloren zou gaan), maar het laatste voordeel was deels onverwacht. Bij Pair Programming ziet men dat je bezig bent en onderbreekt men je veel minder vaak voor triviale dingen. Dit in tegenstelling tot wanneer je alleen (maar geconcentreerd) zit te werken, dan ziet men dat niet en wordt je gewoon van alles gevraagd, en ben je steeds je 'flow' kwijt...
Maar goed, nu heb ik er wel genoeg over gezegd denk ik. Degenen die het interessant vinden moeten het maar eens uitproberen

Slotopmerking: een goed ontwikkelteam heeft een hele serie 'tools' ter beschikking, past die op de juiste momenten toe en begrijpt dat iedere situatie uniek is en zijn eigen aanpassingen nodig heeft.