![Page 1: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/1.jpg)
Remote Pair Programming
Agile 2013Johannes Brodwall
Exilesoft Chief scientist
@jhannes
Guest starring: Niruka Ruhunage
![Page 2: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/2.jpg)
Can a distributed team
still Communicate closely?
![Page 3: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/3.jpg)
This talk is for you if you…
![Page 4: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/4.jpg)
Want to work with remote colleagues
![Page 5: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/5.jpg)
Want to practice pair programming (more)
![Page 6: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/6.jpg)
Want to see some TDD coding
![Page 7: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/7.jpg)
Want to see some TDD coding(And you’re not scared by coding)
![Page 8: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/8.jpg)
After this talk• Find a remote mentor
• Pair with your remote team• Run a distributed workshop
![Page 9: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/9.jpg)
1. Why2. How3. Demonstration 4. Discussion:
Distributed agile
![Page 10: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/10.jpg)
Why global teams
![Page 11: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/11.jpg)
There are not enough devs here
![Page 12: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/12.jpg)
There are not enough devs here(for most values of “here”)
![Page 13: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/13.jpg)
(There are not enough devs here)But there are more “over there”
![Page 14: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/14.jpg)
But
![Page 15: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/15.jpg)
Communication cost increases with distance
![Page 16: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/16.jpg)
Luckily
![Page 17: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/17.jpg)
Communication cost increases with distance
![Page 18: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/18.jpg)
Everybody knows that:Communication cost increases
with distance
![Page 19: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/19.jpg)
Which would you prefer:
![Page 20: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/20.jpg)
Which would you prefer:
A. Team sits onsite, but…uses headphones all day
speak to customer monthly
![Page 21: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/21.jpg)
Which would you prefer:
A. Team sits onsite, but…uses headphones all day
speak to customer monthlyB. Team 1/3 around the worldPair programs with local devs
Speak with customer daily
![Page 22: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/22.jpg)
Distribution change communication
![Page 23: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/23.jpg)
Huge email discussions
![Page 24: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/24.jpg)
Large meetings
![Page 25: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/25.jpg)
Small group discussions
![Page 26: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/26.jpg)
Structured collaboration
![Page 27: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/27.jpg)
Practical remote programming
![Page 28: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/28.jpg)
Don’t send each keystroke across the world and back
![Page 29: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/29.jpg)
We want a solution that is not super-expensive
![Page 30: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/30.jpg)
Voice sharingScreen sharing
File sharing
![Page 31: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/31.jpg)
Voice sharing (Skype)Screen sharing (GoToMeeting)
File sharing (Dropbox)
![Page 32: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/32.jpg)
Ping pong
![Page 33: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/33.jpg)
Ingredient #1:Pair programming
![Page 34: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/34.jpg)
![Page 35: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/35.jpg)
![Page 36: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/36.jpg)
Ingredient #2:Test driven
development
![Page 37: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/37.jpg)
Failing test
Write code
Failing test
Write code
Failing test
![Page 38: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/38.jpg)
Ingredient #3:
Refactoring
![Page 39: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/39.jpg)
Failing test
Write code
Failing test
Write code
Failing test
Refactor code and tests
Refactor code and tests
![Page 40: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/40.jpg)
Put together
![Page 41: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/41.jpg)
Failing test
Write code
Failing test
Write code
Failing test
![Page 42: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/42.jpg)
Failing test
Write code
Failing test
Write code
Failing test
Refactor code and tests
Refactor code and tests
![Page 43: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/43.jpg)
Failing test
Write code
Failing test
Write code
Failing test
Refactor code and tests
Refactor code and tests
![Page 44: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/44.jpg)
Demonstration
![Page 45: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/45.jpg)
What to watch for?
![Page 46: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/46.jpg)
What to watch for?• Collaboration
• Problems and approaches
![Page 47: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/47.jpg)
Say hello to my team!
![Page 48: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/48.jpg)
Remember: Suboptimal network
![Page 49: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/49.jpg)
Please:• Talk about what you see to the person
next to you (whisper)•Tweet to @jhannes
![Page 50: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/50.jpg)
Demonstration(Guest starring Niruka
Ruhunage)
![Page 51: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/51.jpg)
Kata: Bank OCR
![Page 52: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/52.jpg)
Kata: Bank OCR _ _ _ _ _ _ _ _ _ |_||_||_||_||_||_||_||_||_||_||_||_||_||_||_||_||_||_|
=> 888888888 AMB [888886888, 888888988, 888888880]
![Page 53: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/53.jpg)
Discussion
![Page 54: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/54.jpg)
Benefits(Guest starring Niruka
Ruhunage)
![Page 55: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/55.jpg)
Domain knowledge
Also involving the quiet ones
Grow technically
![Page 56: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/56.jpg)
What did you see?
![Page 57: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/57.jpg)
Dealing with time-lag
![Page 58: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/58.jpg)
Helping each other
![Page 59: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/59.jpg)
Communicating ideas
![Page 60: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/60.jpg)
Usage
![Page 61: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/61.jpg)
Dev extension
Training
Job interviews
![Page 62: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/62.jpg)
Dev extension
![Page 63: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/63.jpg)
![Page 64: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/64.jpg)
![Page 65: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/65.jpg)
Training• You just saw it…
![Page 66: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/66.jpg)
Interviews• Reveals real skills
• Motivating: fun and educational => Good PR
• Pre-start training
![Page 67: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/67.jpg)
Distributed workshops
![Page 68: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/68.jpg)
First week
![Page 69: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/69.jpg)
Monday Tuesday Wednesday Thursday Friday
Goal,Stakeholders
Dev baseline Dev baselineReview usage
Define progress,Stories
Wrap up docsDev baseline
Lunch Lunch Lunch Lunch Lunch
Look at what’s going on today
Stakeholder,Usage
Usage review,Context,Domain,Deployment
Refine models
Review,Retrospective
![Page 70: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/70.jpg)
![Page 71: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/71.jpg)
![Page 72: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/72.jpg)
![Page 73: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/73.jpg)
1. Teams of 3 (distributed)
2. Create goal statements –10 minutes
3. Consensus goal
![Page 74: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/74.jpg)
For some stakeholder
Who has a goal
The system/activity/increment
Is a type of system/activity
Which gives a capability/feature.
Unlike most relevant alternative
This has a distinguishing advantage.
![Page 75: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/75.jpg)
For a busy sales officer
Who wants to find good prospects to contact when in a city
The CRM customer radar
Is a mobile map application
Which displays nearby customers on a map.
Unlike searching for prospects in CRM portal
This provides the information at a glance.
![Page 76: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/76.jpg)
What do we get from this?
![Page 77: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/77.jpg)
Small groups
Clear task
Cross boundaries
![Page 78: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/78.jpg)
Distributed retrospective
![Page 79: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/79.jpg)
Example agenda
![Page 80: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/80.jpg)
1. Defining word
2. Groups discussion: achievements and challenges
3. Whole team discuss where are we
4. Round the table suggest actions
5. Hopes for the future
![Page 81: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/81.jpg)
Lessons
![Page 82: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/82.jpg)
Small groups
Clear task
Eye contact doesn’t work
![Page 83: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/83.jpg)
Decreasing the distance
![Page 84: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/84.jpg)
How do you decrease the distance in your
team?
![Page 85: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/85.jpg)
Conclusions
![Page 86: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/86.jpg)
More distribution =>
more structured communication
![Page 87: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/87.jpg)
Dropbox, Skype, GoToMeeting
![Page 88: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/88.jpg)
It’s a small world, after all
![Page 89: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/89.jpg)
Find a remote pair prog partner
![Page 90: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/90.jpg)
Find a remote pair prog partner
Have fun
![Page 91: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/91.jpg)
Grab hold of me in the hallway for a pair programming session
![Page 92: 2013 08-07 agile 2013 - remote pair programming](https://reader031.vdocument.in/reader031/viewer/2022012916/554f8f35b4c905435d8b4fce/html5/thumbnails/92.jpg)
http://johannesbrodwall.com
http://exilesoft.com
http://twitter.com/jhannes
Thank you