remote pair programming buildstuff.lt johannes brodwall exilesoft chief scientist @jhannes guest...

122
Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Upload: yuliana-haslam

Post on 01-Apr-2015

221 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Remote Pair Programming

BuildStuff.ltJohannes Brodwall

Exilesoft Chief scientist

@jhannesGuest starring:

Dileepa Jayasuriya

Page 2: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

How can a distributed team

still collaborateclosely?

Page 3: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

How can a team collaborate well?

Page 4: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

This talk is for you if you…

Page 5: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

You work in a team, but...

Page 6: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Your team doesn’t feel like a team

Page 7: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Your distributed team doesn’t feel like a team

Page 8: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

After this talk

Page 9: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Three things to become a super productive team

Page 10: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

But first

Page 11: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

But first – a competition:

Page 12: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Competition:Find the blue sentence

Page 13: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

1. What is a super team2. Building a super team

with pairing3. Getting the benefits4. Summary

Page 14: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Part I

Page 15: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

What is a super team?

Page 16: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Sharing the burden

The fun remote team

Page 17: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya
Page 18: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya
Page 19: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya
Page 20: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Rabbit hole!

Page 21: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Shared context

Page 22: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Sharing experience

Page 23: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Whops! No!

Page 24: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya
Page 25: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Working baseline

Page 26: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya
Page 27: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

“That’s strange…”

Page 28: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

“Eureka!”

Page 29: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

20 minutes fix (where 10 was

waiting)

Page 30: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Problem solved

Page 31: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

The sad team

Page 32: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Planning

The sad team

JohannesJohannes

Backend dev

“Scrum” “Master”

Johannes: You’ll create CRUD SOAP service for projects

with applications

Okay

Page 33: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Planning

The sad team

JohannesJohannes

Backend dev

“Scrum” “Master”

How long will it take?

Um…

Page 34: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Planning

Backend dev 2

The sad team

JohannesJohannes

Backend dev

“Scrum” “Master”

It’s pretty easy with Hibernate

Okay, 8 hours for each of Create…

then

!

Page 35: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Stand-up

The sad team

Designer

Frontend devDatabase dev

Today, I will work on Create Project

JohannesJohannes

Backend dev

Scrum master

Page 36: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Stand-up

The sad team

Designer

Frontend devDatabase dev

No impediments

JohannesJohannes

Backend dev

Scrum master

Page 37: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Behold – the uber coder

The sad team

Page 38: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Exception!

The sad team

org.hibernate.PropertyValueException: not-null property references a null or transient value: ....common.entities.Application._applicationsBackref org.hibernate.engine.Nullability.checkNullability(Nullability.java:95) org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:313) org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204) org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)

Page 39: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

The sad team

Exception

Google

Stack overflow

Tweak

Deploy

Poke

Page 40: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

The sad team

Exception

Google

Stack overflow

Tweak

Deploy

Poke

Page 41: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

The sad team

Exception

Google

Stack overflow

Tweak

Deploy

Poke

Page 42: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

The sad team

Exception

Google

Stack overflow

Tweak

Deploy

Poke

Page 43: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Stand-up

The sad team

Designer

Frontend devDatabase dev

Yesterday, I worked on Create Project

JohannesJohannes

Backend dev

Scrum master

Page 44: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Stand-up

The sad team

Today, I will hopefully fix the

exception and also do Delete Project

JohannesJohannesScrum master

Designer

Frontend devDatabase dev

Backend dev

Page 45: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Stand-up

The sad team

No impediments

JohannesJohannesScrum master

Designer

Frontend devDatabase dev

Backend dev

Page 46: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Stand-up

The sad teamJohannesJohannesScrum master

Designer

Frontend devDatabase dev

Backend dev

How could they help anway

Page 47: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

The sad team

Page 48: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Behold – the uber coder

The sad team

Page 49: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

The sad team

Page 50: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Stand-up

The sad teamJohannesJohannesScrum master

Yesterday, I finally finished Delete after 3 days of «coding»

Designer

Frontend devDatabase dev

Backend dev

I didn’t need the Delete service

Page 51: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Stand-up

The sad teamJohannesJohannesScrum master

Designer

Frontend devDatabase dev

Backend dev

I didn’t need the Delete service

Yesterday, I finally finished Delete after 3 days of «coding»

Page 52: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

The sad team

STOP

Page 53: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Imagine you should carry 10 wooden beams

Each is 3 meters and 30 kg

Page 54: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

The fun team

Page 55: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Stand-up

The sad team

I’m ready for a new task.What’s on the board..

JohannesJohannes

Johannes

Scrum master

Page 56: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Stand-up

The sad team

«Let’s users administrate their projects»

JohannesJohannes

Johannes

Scrum master

Page 57: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Stand-up

The sad team

I haven’t done any Hibernate tasks before.

Who can I pair with?

JohannesJohannes

Johannes

Scrum master

I can work together with you

Page 58: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya
Page 59: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Exception!

The sad team

org.hibernate.PropertyValueException: not-null property references a null or transient value: ....common.entities.Application._applicationsBackref org.hibernate.engine.Nullability.checkNullability(Nullability.java:95) org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:313) org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204) org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)

Page 60: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

That link doesn’t really seem relevant. Are we getting anywhere?

Time to ask for help?

Page 61: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

I think Dileepa has worked on this sort of

thing before

Page 62: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Dileepa

Yeah, just look at the Person HasMany Roles

mapping

Page 63: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

That’s it!High five!

Page 64: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

The difference

Page 65: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Everyone works everywhere

Knowledge is disseminated

You’re never alone

Page 66: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Part II

Page 67: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Superfyingwith

Pair programming

Page 68: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Pair programming styles

Page 69: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Debate club

“No, this variable should be called fooNumber, not fooNum”,

“But it’s a common abbreviation”

Page 70: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Dedicated driver

“I’ll write the parser”

“I’ll design the algorithm”

Page 71: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Driver-navigator

“I don’t know how to solve this, so I’ll sit at the keyboard”

Page 72: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Ping-pong

Page 73: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Ingredient #1:

Pair programming

Page 74: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya
Page 75: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya
Page 76: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Ingredient #2:

Test driven development

Page 77: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Failing test

Write code

Failing test

Write code

Failing test

Page 78: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Ingredient #3:

Refactoring

Page 79: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Failing test

Write code

Failing test

Write code

Failing test

Refactor code and tests

Refactor code and tests

Page 80: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Put together

Page 81: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Failing test

Write code

Failing test

Write code

Failing test

Page 82: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Failing test

Write code

Failing test

Write code

Failing test

Refactor code and tests

Refactor code and tests

Page 83: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Failing test

Write code

Failing test

Write code

Failing test

Refactor code and tests

Refactor code and tests

Page 84: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Demonstration(Guest starring

Dileepa Jayasuriya)

Page 85: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Kata: Number to text

Page 86: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Kata: Number to text8192 => eight thousand one hundred and ninety two

125,017 =>

one hundred and twenty five thousand and seventeen

Page 87: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

What does it feel like?

Page 88: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Part III

Page 89: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

From here to there

Page 90: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Make sharing into a goal

Page 91: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Dileepa

Johannes

Chintaka

Thomas

Sergey

Arunas

Page 92: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Dileepa

Johannes

Chintaka

Thomas

Sergey

Arunas

Page 93: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Arunas Johannes Dileepa Chinthaka Sergey Thomas

Add new company✓ ✓ ✓ ✓ ✓

Display contacts on map ✓ ✓ ✓

Filter contacts in list✓ ✓

Authenticate user by company ✓ ✓ ✓ ✓

Store password securely ✓ ✓

Usernames with Norwegian letters are rejected

Page 94: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Arunas Johannes Dileepa Chinthaka Sergey Thomas

Add new company✓ ✓ ✓ ✓ ✓

Display contacts on map ✓ ✓ ✓

Filter contacts in list✓ ✓

Authenticate user by company ✓ ✓ ✓ ✓

Store password securely ✓ ✓

Usernames with Norwegian letters are rejected

Page 95: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Arunas Johannes Dileepa Chinthaka Sergey Thomas

Add new company✓ ✓ ✓ ✓ ✓

Display contacts on map ✓ ✓ ✓

Filter contacts in list✓ ✓

Authenticate user by company ✓ ✓ ✓ ✓

Store password securely ✓ ✓

Usernames with Norwegian letters are rejected

Page 96: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Overcoming obstacles

Page 97: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

JIRA

Page 98: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

With a true team, no member owns more

than their current task

Page 99: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

TODO DOING DONE

WAITING

AWAY

Page 100: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

You will get more done

(But not in the first or second sprint)

Page 101: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Distance

Page 102: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

• Skype (or any voice sharing)• GoToMeeting (or flexible screen

sharing)• Dropbox (or any file sharing)

Page 103: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Skill and tact

Page 104: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

• Experiment with switching patterns

• Try out ping-pong• “Could we try it this way

first?”

Page 105: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Building your skills

Page 106: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Fun events

Page 107: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya
Page 108: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Expect exhaustion

Page 109: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Just do it

Page 110: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

• Ask for help• Don’t wait for

• Perfect tool• Perfect oppunity

Page 111: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Conclusion

Page 112: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

What

Page 113: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

• Two people at one codebase• No member owns a task

beyond the day• Team rotates pairing

Page 114: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Why

Page 115: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

• “Rockstar programmer” model doesn’t scale

Page 116: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

• Less Overproduction (unused functions in API)• Less Waiting (for the only person who knows X)• Less Motion (as everyone gets more skilled)• Fewer Defects (as two pair of eyes see better)• Less Over-processing (from double responsibility)• Less Inventory (as team works more focused)• Less Transportation (handoffs inside a story)

Page 117: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

How

Page 118: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

• Ask for help – don’t work alone

• Try ping pong programming for two hours

• Be open, share and listen

Page 119: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

Competition:What was the blue sentence?

Page 120: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

A team creates together what no member could do

alone

Page 121: Remote Pair Programming BuildStuff.lt Johannes Brodwall Exilesoft Chief scientist @jhannes Guest starring: Dileepa Jayasuriya

You can start as soon as you get

back to work