Remote Pair Programming
ScanDev 2013Johannes Brodwall
Exilesoft Chief scientist
@jhannes
Guest starring: Adipa Gunesekara
Can a distributed team still
be Communicating closely?
After this talk• Find a remote mentor
• Pair with your remote team
1. Why2. How3. Demonstration 4. Discussion5. Conclusion
There are not enough devs here
There are not enough devs here(for most values of “here”)
(There are not enough devs here)But there are more “over there”
Communication cost increases with distance
Communication cost increases with distance
Everybody knows that:Communication cost increases
with distance
Which would you prefer:
Which would you prefer:
A. Team sits onsite, but…uses headphones all day
speak to customer monthly
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
Practical remote programming
Don’t send each keystroke across the world and back
We want a solution that is not super-expensive
Voice sharingScreen sharing
File sharing
Voice sharing (Skype)Screen sharing (GoToMeeting)
File sharing (Dropbox)
Ingredient #1:Pair programming
Ingredient #2:Test driven
development
Failing test
Write code
Failing test
Write code
Failing test
Ingredient #3:
Refactoring
Failing test
Write code
Failing test
Write code
Failing test
Refactor code and tests
Refactor code and tests
Failing test
Write code
Failing test
Write code
Failing test
Failing test
Write code
Failing test
Write code
Failing test
Refactor code and tests
Refactor code and tests
Failing test
Write code
Failing test
Write code
Failing test
Refactor code and tests
Refactor code and tests
What to watch for?
What to watch for?• Collaboration
• Problems and approaches
Say hello to my team!
Remember: Suboptimal network
Please:• Talk about what you see to the person
next to you (whisper)•Tweet to @jhannes
Demonstration(Guest starring Adipa
Gunasekara)
Kata: Number names
Kata: Number names1 => one
2 => two
33 => thirty three
365 => three hundred and five
…
1,230,113 => one million, two hundred and thirty thousand, one hundred and thirteen
Benefits(Guest starring Adipa
Gunasekara)
Faster
Lower error rate
More productive
Team startup
Training
Job interviews
Team startup• Me locally with customer• 3 developers in Sri Lanka
• First month: Daily remote pairing on rotation
• High bandwidth for learning tech and domain
Dev extension• Not tried, but I think…
• One Scandinavian dev can work closely with three devs offshore
• If you can double your productivity, the math looks profitable…
Training• You just saw it…
Interviews• Reveals real skills
• Motivating: fun and educational => Good PR
• Pre-start training
Decreasing the distance
How do you decrease the distance in your
team?
Dropbox, Skype, GoToMeeting
It’s a small world, after all
Find a remote pair prog partner
Find a remote pair prog partner
Have fun
Grab hold of me in the hallway for a pair programming session
[email protected]
[email protected]
http://johannesbrodwall.com
http://exilesoft.com
http://twitter.com/jhannes
Thank you