107
Extreme Collaboration Johannes Brodwall Exilesoft Chief scientist @jhannes TODO: Good pairings: Senior/senior: Ping-pong Respectful senior/senior: Stategist/tactician Junior/junior: Timer Junior/senior: Driver/trainer – optimize learning Junior/senior: Co-pilot/pilot – optimize progress

Extreme Collaboration

  • Upload
    chung

  • View
    54

  • Download
    0

Embed Size (px)

DESCRIPTION

Extreme Collaboration. TODO: Good pairings: Senior/senior: Ping-pong Respectful senior/senior: Stategist /tactician Junior/junior: Timer Junior/senior: Driver/trainer – optimize learning Junior/senior: Co-pilot/pilot – optimize progress. Johannes Brodwall Exilesoft Chief scientist - PowerPoint PPT Presentation

Citation preview

Page 1: Extreme Collaboration

Extreme Collaboration

Johannes BrodwallExilesoft Chief scientist

@jhannes

TODO: Good pairings:

Senior/senior: Ping-pongRespectful senior/senior: Stategist/tacticianJunior/junior: TimerJunior/senior: Driver/trainer – optimize learningJunior/senior: Co-pilot/pilot – optimize progress

Page 2: Extreme Collaboration

How can a team collaborate well?

Page 3: Extreme Collaboration

This talk is for you if you…

Page 4: Extreme Collaboration

You work in a team, but...

Page 5: Extreme Collaboration

Your team doesn’t feel like a team

Page 6: Extreme Collaboration

XP:Collective code ownership

Pair programmingWhole team

Sustainable pace

Page 7: Extreme Collaboration

Defining pair programming

Page 8: Extreme Collaboration

Two people working on the same files

Page 9: Extreme Collaboration

Who has tried pair programming?

Page 10: Extreme Collaboration

Positive experiences

Page 11: Extreme Collaboration

Negative experiences

Page 12: Extreme Collaboration

Why no more?

Page 13: Extreme Collaboration

After this talk

Page 14: Extreme Collaboration

Commit to try

Page 15: Extreme Collaboration

1. A sad team2. A super team3. Getting to great

Page 16: Extreme Collaboration

Part I

Page 17: Extreme Collaboration

The sad team

Page 18: Extreme Collaboration

Planning

The sad team

JohannesJohannes

Backend dev

“Scrum” “Master”

Johannes: You’ll create CRUD SOAP service for projects

with applicationsOkay

Page 19: Extreme Collaboration

Planning

The sad team

JohannesJohannes

Backend dev

“Scrum” “Master”

How long will it take?

Um…

Page 20: Extreme Collaboration

PlanningBackend 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 21: Extreme Collaboration

Stand-up

The sad team

Designer

Frontend devDatabase dev

Today, I will work on Create Project

JohannesJohannes

Backend dev

Scrum master

Page 22: Extreme Collaboration

Stand-up

The sad team

Designer

Frontend devDatabase dev

No impediments

JohannesJohannes

Backend dev

Scrum master

Page 23: Extreme Collaboration

Behold – the uber coder

The sad team

Page 24: Extreme Collaboration

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 25: Extreme Collaboration

The sad team

Exception

Google

Stack overflow

Tweak

Deploy

Poke

Page 26: Extreme Collaboration

The sad team

Exception

Google

Stack overflow

Tweak

Deploy

Poke

Page 27: Extreme Collaboration

The sad team

Exception

Google

Stack overflow

Tweak

Deploy

Poke

Page 28: Extreme Collaboration

The sad team

Exception

Google

Stack overflow

Tweak

Deploy

Poke

Page 29: Extreme Collaboration

Stand-up

The sad team

Designer

Frontend devDatabase dev

Yesterday, I worked on Create Project

JohannesJohannes

Backend dev

Scrum master

Page 30: Extreme Collaboration

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 31: Extreme Collaboration

Stand-up

The sad team

No impediments

JohannesJohannesScrum master

Designer

Frontend devDatabase dev

Backend dev

Page 32: Extreme Collaboration

Stand-up

The sad teamJohannesJohannesScrum master

Designer

Frontend devDatabase dev

Backend dev

How could they help anway

Page 33: Extreme Collaboration

The sad team

Page 34: Extreme Collaboration

Behold – the uber coder

The sad team

Page 35: Extreme Collaboration

The sad team

Page 36: Extreme Collaboration

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 37: Extreme Collaboration

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 38: Extreme Collaboration

The sad team

STOP

Page 39: Extreme Collaboration

Imagine you should carry 10 wooden beamsEach is 3 meters and 30 kg

Page 40: Extreme Collaboration

Part II

Page 41: Extreme Collaboration

The fun team

Page 42: Extreme Collaboration

Stand-up

The fun team

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

JohannesJohannes

Johannes

Page 43: Extreme Collaboration

Stand-up

«Basic submit leave request»

JohannesJohannes

Johannes

The fun team

Page 44: Extreme Collaboration

Stand-up

Hiran

Johannes We haven’t worked together yet this week

The fun team

Page 45: Extreme Collaboration

The fun team

Page 46: Extreme Collaboration

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 47: Extreme Collaboration

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

Time to ask for help?

Page 48: Extreme Collaboration

I think Manoj has worked on this sort of thing before

The fun team

Page 49: Extreme Collaboration

Manoj

Yeah, just look at the Person mapping file

The fun team

Page 50: Extreme Collaboration

That’s it!High five!

The fun team

Page 51: Extreme Collaboration

The difference

Page 52: Extreme Collaboration

Everyone works everywhere

Page 53: Extreme Collaboration

Everyone works everywhere

You get help with tech you don’t know

Page 54: Extreme Collaboration

Everyone works everywhereYou’re not blocked

Page 55: Extreme Collaboration

Everyone works everywhere

Integration becomes easier

Page 56: Extreme Collaboration

Knowledge spreads

Page 57: Extreme Collaboration

You don’t get stuck

Page 58: Extreme Collaboration

You don’t get stuckWrong path is stopped by pair

Page 59: Extreme Collaboration

You don’t get stuckSilly mistakes spotted by pair

Page 60: Extreme Collaboration

You don’t get stuckSilly mistakes spotted by pair

Page 61: Extreme Collaboration

Your job as a pair

Page 62: Extreme Collaboration

“Are we focusing on the goal”

Page 63: Extreme Collaboration

“Did you notice …?”

Page 64: Extreme Collaboration

“Is there a better way?”

Page 65: Extreme Collaboration

“Are we working as the team agreed?”

Page 66: Extreme Collaboration

Part II

Page 67: Extreme Collaboration

Superfyingwith

Pair programming

Page 68: Extreme Collaboration

Make sharing into a goal

Page 69: Extreme Collaboration

Dileepa

Johannes

Chintaka

Thomas

Sergey

Arunas

Who is acting worst?

Page 70: Extreme Collaboration

Dileepa

Johannes

Chintaka Sergey

Arunas

Thomas

Who is acting best?

Page 71: Extreme Collaboration

Dileepa

Johannes

Chintaka

Thomas

Sergey

Arunas

Page 72: Extreme Collaboration

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

✓Which task is

suspicious?

Page 73: Extreme Collaboration

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

✓Which team member is

helping most?

Page 74: Extreme Collaboration

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 75: Extreme Collaboration

Task assignment

Page 76: Extreme Collaboration

TODO DOING DONE

Hiran Johannes

SankalpaWaruni

Milina

JohannesHiran

HiranHiran

Waruni

Johannes

WaruniMilina

Sankalpa

Johannes

WaruniWaruni

Milina

Sankalpa

Sankalpa

HiranHiran

Milina

Sankalpa

Page 77: Extreme Collaboration

TODO DOING DONE

WAITING

AWAY

Page 78: Extreme Collaboration

TODO DOING DONE

WAITING

AWAY

Page 79: Extreme Collaboration

TODO DOING DONE

WAITING

AWAY

Page 80: Extreme Collaboration

TODO DOING DONE

WAITING

AWAY

Page 81: Extreme Collaboration

TODO DOING DONE

WAITING

AWAY

Page 82: Extreme Collaboration

TODO DOING DONE

WAITING

AWAYOne avatar per brainOne assigned task per

brainNever mind JIRA

Page 83: Extreme Collaboration

You will get more done

(But not next sprint)

Page 84: Extreme Collaboration

PS: It’s not only for developers

Page 85: Extreme Collaboration

Getting there

Page 86: Extreme Collaboration

Practice with kata

Page 87: Extreme Collaboration

Failing test

Write code

Failing testWrite code

Failing test

Refactor code and tests

Refactor code and tests

Page 88: Extreme Collaboration

Ping-pong

Page 89: Extreme Collaboration

Fun events

Page 90: Extreme Collaboration
Page 91: Extreme Collaboration

Try an experiment

Page 92: Extreme Collaboration

Try an experimentPair 2 hours per day for a

week

Page 93: Extreme Collaboration

Expect exhaustion

Page 94: Extreme Collaboration

Expect exhaustionFor the first month

Page 95: Extreme Collaboration

Conclusion

Page 96: Extreme Collaboration

What

Page 97: Extreme Collaboration

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

beyond the day• Team rotates pairing

Page 98: Extreme Collaboration

Why

Page 99: Extreme Collaboration

• Working solo limits your vision of the code base and the problem

Page 100: Extreme Collaboration

• 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 101: Extreme Collaboration

How

Page 102: Extreme Collaboration

• Create a pair programming circle

• Practice pairing• Commit to pairing 2 hours

per day for a week

Page 103: Extreme Collaboration

Do you accept the challenge?

Pair for 2 hours per day for a week

Page 104: Extreme Collaboration

Your job as a pair

• “Are we focusing on the goal?”• “Did you notice …?”• “Is there a better way?”• “Are we working in the way the team

agreed?”

Page 105: Extreme Collaboration

Tools and tricks

• Pair programming circle• Knowledge matrix• Floating assignments

• Expect exhaustion

Page 106: Extreme Collaboration

[email protected]

http://JohannesBrodwall.comhttp://exilesoft.com

http://twitter.com/jhannes

Thank you

Page 107: Extreme Collaboration

I want your feedback:

How likely are you to recommend this session to a co-worker on a scale from 1 (lowest) to 10 (highest)?

Optional: What's the reason for your number?