Upload
dangdan
View
224
Download
1
Embed Size (px)
Citation preview
© 2013 Mayflower GmbH
XP Days 14. November 2013Martin Ruprecht
Pair Programming Mythbusters
Donnerstag, 14. November 13
Martin RuprechtPHP / JavaScript / Agile [email protected]@mrupilo
Donnerstag, 14. November 13
Fieses Foto? Opa --> raucht gemütlich Pfeife und erzähl aus seinem Leben. Und das mache ich heute auch, ich erzähle aus meiner Arbeitswelt.
Pair Programming
Mythen, Fehler & Tipps + Tricks
Donnerstag, 14. November 13
In diesem Talk möchte ich euch viele Geschichten aus meinem Arbeitsleben erzählen und anhand dieser versuchengängige Mythen zum Pair Programming zu wiederlegen. Außerdem erzähl ich euch welche Fehler wir schon gemacht haben und welche Herausforderungen ich im PP sehe.Aber jetzt: Wer programmiert von euch im Pair? Wer kennt Mythen? Ratet mal, welche Aussage immer kommt wenn es ums Pair Programming geht!
„Pair Programming ist langsam!“
Mythos #1
©pk210
Donnerstag, 14. November 13
Richtig! DAS ist eine Aussage die immer kommt! Aber ist das wirklich so?
„Pair Programming ist schneller!“
© Thomas Helbig
Donnerstag, 14. November 13
Stichwort: Definition of Done -> Review, muss hier nicht gemacht werdenGeschichte: Shares in DLS. Daniel hat es gemacht, ich habe das Review gemacht, anschl. habe ich es nochmal gemacht.Einmal zu zweit wäre besser gewesen.
„Pair Programming ist schneller!“
Donnerstag, 14. November 13
Stichwort: Definition of Done -> Review, muss hier nicht gemacht werdenGeschichte: Shares in DLS. Daniel hat es gemacht, ich habe das Review gemacht, anschl. habe ich es nochmal gemacht. Einmal zu zweit wäre besser gewesen. JAAAA, jetzt hat man zumindest schon mal die Einsicht, dass es zu zweit besser wäre, aber da kommt ein weiteres Argument gegen PP: PP ist teuer!
Mythos #2
„Pair Programming verbrennt zu viele Resourcen und ist nichts für mein Projekt!“
© Images of Money
Donnerstag, 14. November 13
Geschichte hier: Elger und Peri
Kosten
Zeit
Pair Programming
klassische Entwicklung
„Pair Programming ist effektiver!“http://collaboration.csc.ncsu.edu/laurie/Papers/XPSardinia.PDF
Donnerstag, 14. November 13
University of computer sience Utha, Alistair Cockburn (u.a. Crytal clear, Agile Sorfware Development, Mit-Urheber Agiles Manifest) Gegenargumente:4 Augen sehen einfach mehr als zwei, im Pair arbeitet man einfach fokusierter HIER Social Computing oder Wooga: 8min Fokusmacht weniger Fehler die zum Ende Zeit kosten als quasi Seiteneffekt WissenAHHH, Wissen weitergeben, gutes Stichwort, da kommt gleich der nächste Mythos
„Pair Programming ist nur was für Junior-Entwickler um Wissen zu übertragen!“
Mythos #3
© Christoph Polus
Donnerstag, 14. November 13
Geschichte von Nina und Michele
Wissensaustausch findet in beide Richtungen statt!
Donnerstag, 14. November 13
Parallele hier: Wassergläser mit unterschiedlichen Füllständen!
„Meine Tasks sind zu komplex fürs Pair Programming!“
Mythos #4
© Enrico Strocchi
Donnerstag, 14. November 13
Ein weiteres Argument hier: Als Entwickler möchte ich im „Flow“ arbeiten und nicht im Team. Jedoch kann dauerhaft der Flow-Zustand nicht gehalten werden.Geschichte: Code-Wurst
Bei komplexen Aufgaben muss im Pair programmiert werden!
© Charles Rincheval
Donnerstag, 14. November 13
Die Code-Wurst machte uns gut und gerne 1 Jahr lang Probleme
„Im Moment haben wir keine Zeit fürs Pair Programming- wir müssen liefern!“
Mythos #5
© Alan Dayley
Donnerstag, 14. November 13
Meine Lieblings-Erfahrung: Bugfixing mit Simon, Andrej, Aram und Torben.
Pair Programming ist schnell!
© Zach Dill
Donnerstag, 14. November 13
Pair Testing ist schnell!
© Zach Dill
Donnerstag, 14. November 13
Pair Debugging ist schnell!
© Zach Dill
Donnerstag, 14. November 13
Pair Bugfixing ist schnell!
© Zach Dill
Donnerstag, 14. November 13
„Pair Programming löst all unsere Probleme!“
Mythos #6
© Shell Eco-Marathon
Donnerstag, 14. November 13
Geschichte: Vitali oder Oli mit Commits in der Nacht/am Freitag --> anderes Problem im Team
ähh- Sorry!
© Ken Conley
Donnerstag, 14. November 13
„Im Pair geschriebener Code ist IMMER besser!“
Mythos #7
© kennysarmy
Donnerstag, 14. November 13
Nein!© Angelica Portales
Donnerstag, 14. November 13
Stimmt so jetzt nicht! Trotzdem sollte nicht auf gängige QA-Tools und Umgebungen verzichtet werden!
Verzichte nie auf QA!Donnerstag, 14. November 13
Stimmt so jetzt nicht! Trotzdem sollte nicht auf gängige QA-Tools und Umgebungen verzichtet werden!
Fehler im Pair Programming
Donnerstag, 14. November 13
Setup im Pair Programming == Driver & Navigator (aka Co-Pilot), ein Rechner/Monitor, ein Arbeitsplatz, zwei Stühle (wir wollen es ja nicht übertreiben)
Es ist nicht immer alles so easy abgelaufen bei uns darum erzähle ich euch jetzt etwas zu unseren Fehlern die wir gemacht haben.
Navigator nervt
Fehler
© Wikipedia
Donnerstag, 14. November 13
Navigator tritt oberlehrerhaft auf und stört somit gewaltig die Zusammenarbeit
Der Navigator ist nicht zur Prüfung der
korrekten Syntax da!
Donnerstag, 14. November 13
... dafür gibt es die IDE, QA Tools bzw. Umgebung,
Der Navigator sollte bereits einen Schritt
voraus denken!
Donnerstag, 14. November 13
Der Navigator ist nicht zur Verbesserung des Drivers da, sondern zur Verbesserung des Codes/Designs, Stichwort: Big Picture im Kopf
Driver nervt
Fehler
© Images of Monkey
Donnerstag, 14. November 13
Wie kann denn der Driver nervig werden?
Der Driver sitzt zwar an der Tastatur und ist KEIN Coding Monkey!
Donnerstag, 14. November 13
Ganz einfach, in dem er starr die Tastatur bedient und sich nicht an den Entscheidungen beteiligt
Der Driver ist gleichberechtigt an den Entscheidungen im
Code beteiligt!
Donnerstag, 14. November 13
... also Mitdenken ist erlaubt, Stichwort: Small Picture
Bereits getroffene
Entscheidungen werden negativ
bewertet
Fehler
© Collin Jenkins
Donnerstag, 14. November 13
dies gilt auch im nachhinein
Entscheidungen werden gemeinsam getroffen!
Donnerstag, 14. November 13
dies gilt auch im nachhinein
Navigator wechselt eigenständig in die Driver Rolle
Fehler
© Marianne Muegenburg Cothem
Donnerstag, 14. November 13
... sprich, er reißt das Keyboard an sich
Respektiere deinen Partner und halte dich
an die Regeln!
Donnerstag, 14. November 13
Das geht ja mal gar nicht! Es gibt im Pair Programming nunmal die zwei Rollen Driver und Navigator und die sollen auch so eingehalten werden
Driver startet mit der Implementierung ohne Navigator
Fehler
Donnerstag, 14. November 13
Dies ist ebenfalls ein grobes Foul! Das Team ist noch nicht vollständig, also gehts auch nicht los. Die gilt übrigens auch für kleine Unterbrechungen wie der Gang auf die Toilette oder zur Kaffeemaschine.
Respektiere deinen Partner und halte dich
an die Regeln!
Donnerstag, 14. November 13
Es findet keine Kommunikation statt
Fehler
© Dr Zoidberg
Donnerstag, 14. November 13
Keine Kommunikation der Partner deutet schlichtweg auf ein dysfunktionales Team hin.
Pair Programming lebt von der Kommunikation
der beiden Partner!
Donnerstag, 14. November 13
Weitere Herausforderungen
Donnerstag, 14. November 13
Verhältnis zwischen Driver und Navigator ist angespannt
Herausforderungen
Donnerstag, 14. November 13
Sprich, es gibt Kollegen mit denen man einfach nicht kann. Dennoch sollte man auch mit diesen Kollegen ein Pairing zumindest versuchen.
Häufiger Perspektivenwechsel
hilft den Partnern
Verhältnis zwischen Driver und Navigator ist angespannt
Donnerstag, 14. November 13
Ein Wechsel entspannt die Lage und ändert die Sichtweise
Klare Regeln definieren
Verhältnis zwischen Driver und Navigator ist angespannt
Donnerstag, 14. November 13
Klare Regeln definieren die Zusammenarbeit. Aber Achtung! Zu viele Regeln sind auch kein gutes Zeichen!
Driver, Navigator, Coach
Verhältnis zwischen Driver und Navigator ist angespannt
Donnerstag, 14. November 13
Eine weitere Instanz kann ein Team beflügeln und Missverständnissen vorbeugen
Andere, freundliche, „neutrale“ Umgebung
auswählen
Verhältnis zwischen Driver und Navigator ist angespannt
Donnerstag, 14. November 13
Ein Tapetenwechsel ist nicht schlecht und schafft eine andere Atmosphäre
Toleriere und wertschätze die Argumente deines
Partners
Verhältnis zwischen Driver und Navigator ist angespannt
Donnerstag, 14. November 13
Siehe auch dazu Grundsatz jeder Retrospektive (Prime Directive), „Jeder macht seinen Job bestmöglichst!“
Wissen ist nicht gleich verteilt
Herausforderungen
Donnerstag, 14. November 13
Dies kann und wird immer wieder passieren, was auch ganz einfach in der Aufstellung der (agilen) Entwickler-Teams liegt. Dies ist aber nicht schlimm. Sollte sich ein Entwickler dabei unwohl fühlen, „Der kann doch viel mehr“ gibt es die Möglichkeit, im vorhinein Aufgaben zu definieren, um Entwickler mit weniger Erfahrung die Möglichkeit zu geben, sich in ein Thema einzuarbeiten
Vorher definierte Aufgaben geben die Möglichkeit sich in ein Thema einzuarbeiten!
Wissen ist nicht gleich verteilt
Donnerstag, 14. November 13
„Mentoren“ können beim Wissensaufbau
eines Partners helfen!
Wissen ist nicht gleich verteilt
Donnerstag, 14. November 13
Alternativ können „Mentoren“ auch aus anderen Teams beim Wissensaufbau helfen.
Remote Pair Programming
© mofetos
Herausforderungen
Donnerstag, 14. November 13
Home-Office, verteilte Teams: auch hier kann im Pair gearbeitet werden, dazu nutzen wir Tools wie Skype, Jabber und Plugins für unsere IDE
Wir nutzen Tools wie Saros (Plugin für
Eclipse), Skype, Jabber....
Remote Pair Programming
http://www.saros-project.org/
Donnerstag, 14. November 13
Unterschiedliche Systeme
© ckowalik
Herausforderungen
Donnerstag, 14. November 13
Linux, Windows, Mac- jeder darf bei uns mit seinem Lieblingssystem arbeiten. Deshalb gilt hier beim Pairing: Respekt
Akzeptiere den Arbeitsplatz deines
Kollegen
Unterschiedliche Systeme
Donnerstag, 14. November 13
Siehe auch dazu Grundsatz jeder Retrospektive (Prime Directive), „Jeder macht seinen Job bestmöglichst!“
Respektiere deinen Partner und halte dich
an die Regeln!
Donnerstag, 14. November 13
Körpergerüche
Herausforderungen
Donnerstag, 14. November 13
Tja... solls auch geben
Donnerstag, 14. November 13
.... und zum Glück gibts das auch ;-)
Tipps
Donnerstag, 14. November 13
Abschließend noch ein paar Tipps zum Pair Progamming
Plane Pair Programming fix in deinen Tagesablauf
mit ein!
Tipps
Donnerstag, 14. November 13
1x täglich für 25- 30min.
Donnerstag, 14. November 13
Hintergrund dabei: unterschiedliche Arbeitszeiten, der eine kommt un 7 der andere um 10 Uhr. Tagesgeschäft, Meetings, Urlaub,...
„Pair Programming Sessions“(à 2 Std)
Donnerstag, 14. November 13
Hintergrund dabei: unterschiedliche Arbeitszeiten, der eine kommt un 7 der andere um 10 Uhr. Tagesgeschäft, Meetings, Urlaub,...
Partner sollten nicht vom Management bestimmt
werden!
Tipps
Donnerstag, 14. November 13
Das Management beschließt, dass nun im Pair gearbeitet werden soll. Das ist ja noch OK- aber dass auch noch die Paare vom Chef/Teamlead zugeordnet werden? Keine gute Idee. Damit jeder mal mit jedem Arbeitet, gibts unterschiedliche Modelle, ich möchte euch die Pair Stair oder auch Pair Matrix vorstellen
Pair Stair / Pair MatrixDonnerstag, 14. November 13
Steigerung dazu: keine Klebepunkte, sondern TicketNr.
Pairing auch beim Design, Testen,
Debuggen...
Tipps
Donnerstag, 14. November 13
TDD
Tipps
Donnerstag, 14. November 13
Test Driven Development eignet sich optimal fürs
Pair Programming!
Donnerstag, 14. November 13
Übung!
Tipps
Donnerstag, 14. November 13
Im Coding Dojos lässt sich mit Code Katas
hervorragend Pair Programming trainieren!
Donnerstag, 14. November 13
„... komm wir machens jetzt einfach mal!“
Tipps
Donnerstag, 14. November 13
© 2013 Mayflower GmbH
Fragen?
Donnerstag, 14. November 13
© 2013 Mayflower GmbH
@mrupilo
Feedback please!
Donnerstag, 14. November 13
Vielen Dank für Ihre Aufmerksamkeit!
© 2013 Mayflower GmbH
Kontakt Martin [email protected]+49 89 24 20 54 1116
Mayflower GmbHMannhardtstr. 680538 München
Donnerstag, 14. November 13
Bildnachweis• http://www.flickr.com/photos/ujh/4307773392/sizes/l/in/photostream/
• http://www.flickr.com/photos/pk210/8720825865
• http://www.flickr.com/photos/8727395@N04/2879253933/in/photolist-5oqVTc-5C62UF-6qNjZV-6tWgVe-6tWgVi-6AcxBu-7ebryx-7ebrQi-7ebseF-7ebski-7ebsxF-7ebsCH-7ebsZz-7ebtev-7ebtri-7efjWS-7efk2q-7efkfW-7efkmY-7efksw-7efkN9-7efm6m-7efmgN-7efmvy-7efmFE-7efmTN-7fwRvj-7pQstR-7pQutt-7pQvFT-7pQwPp-7pQy6k-7pQzPM-7pQEoK-7pQFbX-7pUneL-7pUotA-7pUu7d-7pUwt7-7pUxfE-7pUxV7-7pUBtu-czP9NU-7JotBq-azxgAm-7EUKXs-84NPeG-7PHVof-8qeSR1-7GBXrE
• http://www.flickr.com/photos/59937401@N07/5930176734/in/photolist-a32GWs-8qTEUF-8VHkSg-bxMVzZ-ddeNXZ-d9DmTm-e32C4B-9VxMg2-9fKcip-dctnst-e3ou3E-9fjJ3M-dVhKs1-9WCV3h-dUML5q-9WA3Hp-dtQm2V-7CSL2z-8ibtjk-8ieDQo-8ibsV4-8ibtDV-8ieFFY-8ieECW-8ibsLB-8ieGBN-8ieDsu-8ieJcE-8ibrXH-8ieFvW-8ibuEP-8ieE2L-8ibsbt-8ibrfX-8ibt7P-8ibvg8-8ibrFK-8ieEPu-8ieEeA-8ieDgN-8ieHZG-7QJq72-7QMG7N-7QMKP9-7QJF1H-7QMBJs-7QMEwo-7QJHSp-7QJDQt-7QJm7p-7QMZRf
• http://www.flickr.com/photos/93361362@N00/260968967/in/photolist-p4wYX
• http://www.flickr.com/photos/strocchi/1451285663/
• http://www.flickr.com/photos/hugokernel/5027492067/
• http://www.flickr.com/photos/78832226@N00/2780700767/in/photolist-5eHPsF-5qgTZF-5qmfgq-5uuH3v-5vM7gB-5Lwcux-5UuR9Y-5UESLm-662P7W-6atRtx-6ay1oQ-6gFrrD-6o5g3N-6yBV6g-6yG1uw-6CyLoV-6Vno36-6WjY8C-6WKux1-6XB6NY-6XB7hG-72km4i-72pmnC-7hBQyB-7hRgHp-7jxFvV-7pVq1D-7pVq6M-7pVqo4-7viPMa-8aDCvD-7UmPrC-dACPHD-e4XtaU-87afpr-e4XegU-e4RQrz-e4RArX-e4XtR9-e4Xtho-e4RQTT-e4RR8z-7NQz4b-a1fwkq-9RPAVm-dAGVQo-aZyVVB-9G3KTW-9ZuiS7-dhio4Z-cMaKXL
• http://www.flickr.com/photos/46144172@N00/3688012537/in/photolist-6BU2D4-6LcjYz-6Nnyhu-6Noygb-6SR6v6-6WeMWW-6WiF2W-72YYrx-74cB3E-74u9uj-7bSfK8-7cXRW8-7eCEUj-7jvovC-7jQKG8-7jQKZc-7jUDC5-7sHAnQ-eGFgMh-8PSmG1-8dqacC-87tdVE-9epvNS-82mE3Z-8LPbXY-7Ru7bk-9k2rtm-djg6xs-8yNZyA-9ZimvU-9ZfsWt-9Zinbd-9ZimGw-8y81WS-duCDsK-ak2Lwe-dSve1Q-bBAkTy-9zpur8-8z8HDF-b7STKc-8D1q7n-aJRfYa-9jJH3f-8ENVSy-8ENVyj-8ENVEb-8ENVYu-8Ubqau-aMuGYc-9FgnLf
• http://www.flickr.com/photos/60317050@N08/8735098936/in/photolist-eiTEA5-86Wb8N-9dnfuP-bPN8PD-bqAMAU-7J9DM3-9nghvm-9zoEpY-7J5GAX-bDxg4v-9sTWHH-bR9oLV-ax5ZrM-ax8F2B-axbo7J-ax8F6t-9d6if2-ax8H9A-ax61h6-ax8GwU-ax8HhA-ax8FXS-ax8Gno-ax5ZzF-ax612F-ax8GRm-ax61vF-ax5Z2T-ax5ZD8-ax61n2-ax8FEu-ax8GpW-ax61oH-ax8via-ax8GjY-ax5Z8T-ax614v-ax61BP-ax61cX-ax8H1A-ax8Hbb-ax8FUd-ax5ZdM-axbdk9-ax8H7s-ax61f2-ax8GBo-ax8Gg5-ax8vjH-ax619a-ax8GuG
• http://www.flickr.com/photos/36101700372@N01/118533175/in/photolist-btvMr-btvMV-btvNG-cZNst-fAe3K-k2YXC-nfAia-rzNug-rzNz2-rzNCH-rzNGu-rzNKC-rzNPr-rzNTx-rzNWH-2Jcbeo-3JrHhh-4kRTBW-4MiqXn-4Tu5KR-4Tu5Nn-4Tu5Qp-4Tu5Wi-4Tu5WZ-4Tu5YP-4Tu6cP-4Tu6pk-4Tyic9-4TyipS-4TyirS-4TyisJ-4Tyiuy-5DWfaD-5QVV7Q-6rUsDX-6CfoT4-6J9HfP-6J9HEv-6LyNV4-6NUg9e-6NYqwh-6NYrn5-6SYi6G-6UTkEz-6UTkS4-6UXq8Y-6UXqfE-73qzea-7efoZa-7xdQyH-7xdQJX
• http://www.flickr.com/photos/kennysarmy/6318447093/
• http://www.flickr.com/photos/49835901@N00/1493377591/in/photolist-3gXX8v-3KsoCc-3Zd9d2-4bPFUR-4cZqH4-4gCgwn-4jWqei-4k1sVo-4sFkee-4FjisX-4KJMZH-4L8eTZ-4L8fWp-4Lcwd9-4SrtWe-4SxziS-5g2LRH-5iahV3-5jowbd-5rW1Uz-5tgwom-5wgc6H-5DSs8i-5DWHQU-5KUNJA-5XLPKK-63yLkt-63yMfc-63yN96-63yNy6-67K2V7-69p1R6-6hgkPZ-6hvgxv-6uyz2m-6ATdwA-6EMm6L-6LzBuW-6NtqMH-6QoRtH-6QUz9C-6SttAQ-6SYzaB-6TEDt6-6TRB3e-6WxGtg-72uRAq-797jqv-79bc1S-7hcGmZ-7hcJDT
• http://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Pair_programming_1.jpg/330px-Pair_programming_1.jpg
• http://www.flickr.com/photos/shazwildcat/194598532/
• http://www.flickr.com/photos/61583247@N02/7165647503/in/photolist-bVcPmB-7YCoNN-86CWGz-7EPsgR-9LWhYW-8ygPDT-7ZjcDY-9fbyxe-99SBXc-8bkhso-7ERQvW-7ZXWAV-cgHim3-8xpVNx-8bp4WW-8bp54L-9VeqaQ-dU7qJR-aDvbdN-98b9oC-dSYHm3-7EMZqx-8Pr6KH
• http://www.flickr.com/photos/36954268@N07/4979677941/in/photolist-8A39Le-93ijDd-ajeBZJ-9cgidv-9rDzfq-d7yfZ9-7Ln9a3-dGZoqq-aqvWXT-aqvX6z-dkpYrM-aZLu7T-bZiZxm-da7Ds1
• http://www.flickr.com/photos/39746512@N05/6247886040/in/photolist-aw73R7-7A1eJR-au9zXP-8YEx8Q-95M6eV-dRHBt5-9XR3hX-b7tYBk-bD74dY-7JQBDC-926Buh-axWZGa-axZFPy-bV5LVJ-8CRu1o-aQUb7g-8BaTMn-8BaTKB-ejcmDC-ej6ahP-ej6BCR-ejcmAU-ej6ah4-93r6JH-93rcb4-93r8bn-93ujEh-93r7kF-93up2w-93ucGJ
• http://www.flickr.com/photos/mofetos/435827739/sizes/q/in/photolist-EvJpn-EMYiS-NAL1W-TJPWw-X6KgU-2dh7t6-2gg8am-3ggCH6-3gXx9o-3md3RX-3nKGv3-3GNnmD-3GYWn8-3W6cUV-4aaNm5-4dWuxN-4eQ5Ff-4fHiAW-4gwkUT-4rwGdv-4uZgcN-4w6VC6-4zo19a-4CnnkW-4DQ9Qo-4EtoSE-4HdCKB-4JvJxe-4QK9DY-4RCuFM-4RGKKa-4StokJ-4XK3A8-4YuKBm-53w41S-53EzGm-551kGR-57Ebk3-57Ebk7-5fw6rw-5qG5S8-5tJdKt-5tNzw9-5tNABy-5BJN4Z-5Gahed-5GquTb-5JVs1R-5JWpzf-5Kyk7w-5M1ac7/
• http://www.flickr.com/photos/ckowalik/2272008761/sizes/o/in/photolist-4sLD3R-4uu8D9-4vEggt-4w9tXh-4xfXmu-4C4uT7-4EDyQM-4J7ztv-4J7zHP-4J7zLP-4J7zP8-4J7zW6-4J7Ae6-4J7AgX-4J7Aor-4J7Ar8-4J7AtP-4J7AG4-4J7B5X-4J7Bap-4J7BiB-4J7BmZ-4J7BYZ-4J7Car-4J7Cda-4J7Cwe-4J7CBF-4J7CGZ-4J7CNz-4JbPg9-4JbPjm-4JbPnm-4JbPym-4JbPBu-4JbPJQ-4JbPTs-4JbQ2Q-4JbQf7-4JbQkL-4JbQru-4JbQuf-4JbQFW-4JbR4J-4JbR7s-4JbRcJ-4JbRfs-4JbRj9-4JbRmJ-4JbRpw-4JbRv3-4JbRyd/
Donnerstag, 14. November 13