Post on 11-May-2015
description
transcript
Remote Pair Programming
Agile 2013Johannes Brodwall
Exilesoft Chief scientist
@jhannes
Guest starring: Niruka Ruhunage
Can a distributed team
still Communicate closely?
This talk is for you if you…
Want to work with remote colleagues
Want to practice pair programming (more)
Want to see some TDD coding
Want to see some TDD coding(And you’re not scared by coding)
After this talk• Find a remote mentor
• Pair with your remote team• Run a distributed workshop
1. Why2. How3. Demonstration 4. Discussion:
Distributed agile
Why global teams
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”
But
Communication cost increases with distance
Luckily
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
Distribution change communication
Huge email discussions
Large meetings
Small group discussions
Structured collaboration
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)
Ping pong
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
Put together
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
Demonstration
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 Niruka
Ruhunage)
Kata: Bank OCR
Kata: Bank OCR _ _ _ _ _ _ _ _ _ |_||_||_||_||_||_||_||_||_||_||_||_||_||_||_||_||_||_|
=> 888888888 AMB [888886888, 888888988, 888888880]
Discussion
Benefits(Guest starring Niruka
Ruhunage)
Domain knowledge
Also involving the quiet ones
Grow technically
What did you see?
Dealing with time-lag
Helping each other
Communicating ideas
Usage
Dev extension
Training
Job interviews
Dev extension
Training• You just saw it…
Interviews• Reveals real skills
• Motivating: fun and educational => Good PR
• Pre-start training
Distributed workshops
First week
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
1. Teams of 3 (distributed)
2. Create goal statements –10 minutes
3. Consensus goal
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.
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.
What do we get from this?
Small groups
Clear task
Cross boundaries
Distributed retrospective
Example agenda
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
Lessons
Small groups
Clear task
Eye contact doesn’t work
Decreasing the distance
How do you decrease the distance in your
team?
Conclusions
More distribution =>
more structured communication
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
jbr@exilesoft.com
nru@exilesoft.com
http://johannesbrodwall.com
http://exilesoft.com
http://twitter.com/jhannes
Thank you