2013 08-07 agile 2013 - remote pair programming

92
Remote Pair Programming Agile 2013 Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Niruka Ruhunage

Upload: johannes-brodwall

Post on 11-May-2015

3.665 views

Category:

Technology


0 download

DESCRIPTION

In this talk, we will go through a practical approach for remote pair programming adopted for high-latency situations. We will demonstrate remote pair programming with a live example and we will discuss the advantages and usages of the approach.

TRANSCRIPT

Page 1: 2013 08-07 agile 2013 - remote pair programming

Remote Pair Programming

Agile 2013Johannes Brodwall

Exilesoft Chief scientist

@jhannes

Guest starring: Niruka Ruhunage

Page 2: 2013 08-07 agile 2013 - remote pair programming

Can a distributed team

still Communicate closely?

Page 3: 2013 08-07 agile 2013 - remote pair programming

This talk is for you if you…

Page 4: 2013 08-07 agile 2013 - remote pair programming

Want to work with remote colleagues

Page 5: 2013 08-07 agile 2013 - remote pair programming

Want to practice pair programming (more)

Page 6: 2013 08-07 agile 2013 - remote pair programming

Want to see some TDD coding

Page 7: 2013 08-07 agile 2013 - remote pair programming

Want to see some TDD coding(And you’re not scared by coding)

Page 8: 2013 08-07 agile 2013 - remote pair programming

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

1. Why2. How3. Demonstration 4. Discussion:

Distributed agile

Page 10: 2013 08-07 agile 2013 - remote pair programming

Why global teams

Page 11: 2013 08-07 agile 2013 - remote pair programming

There are not enough devs here

Page 12: 2013 08-07 agile 2013 - remote pair programming

There are not enough devs here(for most values of “here”)

Page 13: 2013 08-07 agile 2013 - remote pair programming

(There are not enough devs here)But there are more “over there”

Page 14: 2013 08-07 agile 2013 - remote pair programming

But

Page 15: 2013 08-07 agile 2013 - remote pair programming

Communication cost increases with distance

Page 16: 2013 08-07 agile 2013 - remote pair programming

Luckily

Page 17: 2013 08-07 agile 2013 - remote pair programming

Communication cost increases with distance

Page 18: 2013 08-07 agile 2013 - remote pair programming

Everybody knows that:Communication cost increases

with distance

Page 19: 2013 08-07 agile 2013 - remote pair programming

Which would you prefer:

Page 20: 2013 08-07 agile 2013 - remote pair programming

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

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

Distribution change communication

Page 23: 2013 08-07 agile 2013 - remote pair programming

Huge email discussions

Page 24: 2013 08-07 agile 2013 - remote pair programming

Large meetings

Page 25: 2013 08-07 agile 2013 - remote pair programming

Small group discussions

Page 26: 2013 08-07 agile 2013 - remote pair programming

Structured collaboration

Page 27: 2013 08-07 agile 2013 - remote pair programming

Practical remote programming

Page 28: 2013 08-07 agile 2013 - remote pair programming

Don’t send each keystroke across the world and back

Page 29: 2013 08-07 agile 2013 - remote pair programming

We want a solution that is not super-expensive

Page 30: 2013 08-07 agile 2013 - remote pair programming

Voice sharingScreen sharing

File sharing

Page 31: 2013 08-07 agile 2013 - remote pair programming

Voice sharing (Skype)Screen sharing (GoToMeeting)

File sharing (Dropbox)

Page 32: 2013 08-07 agile 2013 - remote pair programming

Ping pong

Page 33: 2013 08-07 agile 2013 - remote pair programming

Ingredient #1:Pair programming

Page 34: 2013 08-07 agile 2013 - remote pair programming
Page 35: 2013 08-07 agile 2013 - remote pair programming
Page 36: 2013 08-07 agile 2013 - remote pair programming

Ingredient #2:Test driven

development

Page 37: 2013 08-07 agile 2013 - remote pair programming

Failing test

Write code

Failing test

Write code

Failing test

Page 38: 2013 08-07 agile 2013 - remote pair programming

Ingredient #3:

Refactoring

Page 39: 2013 08-07 agile 2013 - remote pair programming

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

Put together

Page 41: 2013 08-07 agile 2013 - remote pair programming

Failing test

Write code

Failing test

Write code

Failing test

Page 42: 2013 08-07 agile 2013 - remote pair programming

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

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

Demonstration

Page 45: 2013 08-07 agile 2013 - remote pair programming

What to watch for?

Page 46: 2013 08-07 agile 2013 - remote pair programming

What to watch for?• Collaboration

• Problems and approaches

Page 47: 2013 08-07 agile 2013 - remote pair programming

Say hello to my team!

Page 48: 2013 08-07 agile 2013 - remote pair programming

Remember: Suboptimal network

Page 49: 2013 08-07 agile 2013 - remote pair programming

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

Demonstration(Guest starring Niruka

Ruhunage)

Page 51: 2013 08-07 agile 2013 - remote pair programming

Kata: Bank OCR

Page 52: 2013 08-07 agile 2013 - remote pair programming

Kata: Bank OCR _ _ _ _ _ _ _ _ _ |_||_||_||_||_||_||_||_||_||_||_||_||_||_||_||_||_||_|

=> 888888888 AMB [888886888, 888888988, 888888880]

Page 53: 2013 08-07 agile 2013 - remote pair programming

Discussion

Page 54: 2013 08-07 agile 2013 - remote pair programming

Benefits(Guest starring Niruka

Ruhunage)

Page 55: 2013 08-07 agile 2013 - remote pair programming

Domain knowledge

Also involving the quiet ones

Grow technically

Page 56: 2013 08-07 agile 2013 - remote pair programming

What did you see?

Page 57: 2013 08-07 agile 2013 - remote pair programming

Dealing with time-lag

Page 58: 2013 08-07 agile 2013 - remote pair programming

Helping each other

Page 59: 2013 08-07 agile 2013 - remote pair programming

Communicating ideas

Page 60: 2013 08-07 agile 2013 - remote pair programming

Usage

Page 61: 2013 08-07 agile 2013 - remote pair programming

Dev extension

Training

Job interviews

Page 62: 2013 08-07 agile 2013 - remote pair programming

Dev extension

Page 63: 2013 08-07 agile 2013 - remote pair programming
Page 64: 2013 08-07 agile 2013 - remote pair programming
Page 65: 2013 08-07 agile 2013 - remote pair programming

Training• You just saw it…

Page 66: 2013 08-07 agile 2013 - remote pair programming

Interviews• Reveals real skills

• Motivating: fun and educational => Good PR

• Pre-start training

Page 67: 2013 08-07 agile 2013 - remote pair programming

Distributed workshops

Page 68: 2013 08-07 agile 2013 - remote pair programming

First week

Page 69: 2013 08-07 agile 2013 - remote pair programming

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
Page 71: 2013 08-07 agile 2013 - remote pair programming
Page 72: 2013 08-07 agile 2013 - remote pair programming
Page 73: 2013 08-07 agile 2013 - remote pair programming

1. Teams of 3 (distributed)

2. Create goal statements –10 minutes

3. Consensus goal

Page 74: 2013 08-07 agile 2013 - remote pair programming

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

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

What do we get from this?

Page 77: 2013 08-07 agile 2013 - remote pair programming

Small groups

Clear task

Cross boundaries

Page 78: 2013 08-07 agile 2013 - remote pair programming

Distributed retrospective

Page 79: 2013 08-07 agile 2013 - remote pair programming

Example agenda

Page 80: 2013 08-07 agile 2013 - remote pair programming

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

Lessons

Page 82: 2013 08-07 agile 2013 - remote pair programming

Small groups

Clear task

Eye contact doesn’t work

Page 83: 2013 08-07 agile 2013 - remote pair programming

Decreasing the distance

Page 84: 2013 08-07 agile 2013 - remote pair programming

How do you decrease the distance in your

team?

Page 85: 2013 08-07 agile 2013 - remote pair programming

Conclusions

Page 86: 2013 08-07 agile 2013 - remote pair programming

More distribution =>

more structured communication

Page 87: 2013 08-07 agile 2013 - remote pair programming

Dropbox, Skype, GoToMeeting

Page 88: 2013 08-07 agile 2013 - remote pair programming

It’s a small world, after all

Page 89: 2013 08-07 agile 2013 - remote pair programming

Find a remote pair prog partner

Page 90: 2013 08-07 agile 2013 - remote pair programming

Find a remote pair prog partner

Have fun

Page 91: 2013 08-07 agile 2013 - remote pair programming

Grab hold of me in the hallway for a pair programming session