Remote Pair Programming Agile 2013 Johannes Brodwall Exilesoft Chief 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
(And you’re not scared by coding)
After this talk Find a remote mentor Pair with your remote team Run a distributed workshop
1.Why 2.How 3.Demonstration 4.Discussion: Distributed agile
Why global teams
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:
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 monthly B.Team 1/3 around the world Pair programs with local devs Speak with customer daily
Distribution change communication
Huge 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 sharing Screen 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
Put together
Failing test Write code Failing test Write code Failing test
Write code Failing test Write code Failing test Refactor code and tests
Failing test Write code Failing test Write code Failing test Refactor code and tests
Demonstration
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
Demonstration (Guest starring Niruka Ruhunage)
Kata: Bank OCR
_ _ _ _ _ _ _ _ _ |_||_||_||_||_||_||_||_||_| |_||_||_||_||_||_||_||_||_| => AMB [ , , ]
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
MondayTuesdayWednesdayThursdayFriday Goal, Stakeholders Dev baseline Review usage Define progress, Stories Wrap up docs Dev baseline 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
Have fun
Grab hold of me in the hallway for a pair programming session
Thank you