Page 1
Remote Pair Programming
Agile PragueJohannes Brodwall
Exilesoft Chief scientist
@jhannes
Guest starring: Rasika Sugathadasa
Page 2
Can a distributed team
still Communicate closely?
Page 3
This talk is for you if you…
Page 4
Want to work with remote colleagues
Page 5
Want to practice pair programming (more)
Page 6
Want to see some TDD coding
Page 7
Want to see some TDD coding(And you’re not scared by coding)
Page 8
After this talk• Find a remote mentor
• Pair with your remote team• Run a distributed workshop
Page 9
1. Why2. How3. Demonstration 4. Discussion:
Distributed agile
Page 11
There are not enough devs here
Page 12
There are not enough devs here(for most values of “here”)
Page 13
(There are not enough devs here)But there are more “over there”
Page 15
Communication cost increases with distance
Page 17
Communication cost increases with distance
Page 18
Everybody knows that:Communication cost increases
with distance
Page 19
Which would you prefer:
Page 20
Which would you prefer:
A. Team sits onsite, but…uses headphones all day
speak to customer monthly
Page 21
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
Practical remote programming
Page 23
Don’t send each keystroke across the world and back
Page 24
We want a solution that is not super-expensive
Page 25
Voice sharingScreen sharing
File sharing
Page 26
Voice sharing (Skype)Screen sharing (GoToMeeting)
File sharing (Dropbox)
Page 28
Ingredient #1:Pair programming
Page 31
Ingredient #2:Test driven
development
Page 32
Failing test
Write code
Failing test
Write code
Failing test
Page 33
Ingredient #3:
Refactoring
Page 34
Failing test
Write code
Failing test
Write code
Failing test
Refactor code and tests
Refactor code and tests
Page 36
Failing test
Write code
Failing test
Write code
Failing test
Page 37
Failing test
Write code
Failing test
Write code
Failing test
Refactor code and tests
Refactor code and tests
Page 38
Failing test
Write code
Failing test
Write code
Failing test
Refactor code and tests
Refactor code and tests
Page 40
What to watch for?
Page 41
What to watch for?• Collaboration
• Problems and approaches
Page 42
Please:• Talk about what you see to the person
next to you (whisper)•Tweet to @jhannes
Page 43
Demonstration(Guest starring Rasika
Sugathadasa)
Page 44
Kata: Roman numerals
Page 45
Kata: Roman numerals1 => I
5 => V
1999 => MCMXCIX
Page 47
Benefits(Guest starring Rasika
Sugathadasa)
Page 48
1. Faster learning
2. Feedback on my own skills
3. Better results through connected work
4. Fun!
Page 49
1. Faster learning
2. Feedback on my own skills
3. Better results through connected work
4. Fun!
Page 50
What did you see?
Page 51
Dealing with time-lag
Page 52
Helping each other
Page 53
Communicating ideas
Page 55
Dev extension
Training
Job interviews
Page 57
Project startup• Two weeks ago, the two of us
worked on the same team
Page 58
Training• You just saw it…
Page 59
Interviews• Reveals real skills
• Motivating• Pre-start training
Page 61
More distribution =>
more structured communication
Page 62
Dropbox, Skype, GoToMeeting
Page 63
Dropbox, Skype, GoToMeeting(There are many other ways, too)
Page 64
It’s a small world, after all
Page 65
Find a remote pair prog partner
Page 66
Find a remote pair prog partner
Have fun
Page 67
Grab hold of me in the hallway for a pair programming session
Page 68
[email protected]
[email protected]
http://johannesbrodwall.com
http://exilesoft.com
http://twitter.com/jhannes
Thank you