pair programming anti patterns

15
ANTI-PATTERNS OF PAIR PROGRAMMING [email protected] @RandyEppinger

Upload: randy-eppinger

Post on 11-Apr-2017

210 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Pair programming anti patterns

ANTI-PATTERNSOF PAIR PROGRAMMING

[email protected]@RandyEppinger

Page 2: Pair programming anti patterns

DefinitionParaphrase from Extreme Programming Explained:

Pair programming is a dialog between two people trying to simultaneously program, analyze, and design software and understand how to do so better. It is a conversation at many levels assisted by and focused on one computer.

It is NOT:

Two people taking turns programming

Page 3: Pair programming anti patterns

Benefits reminderOne study showed that pairs are only 15% slower than working solo while reducing bugs by 15 - 50%

Live code review

Names, Coding Conventions, Patterns, Architecture

Shared learning of technology, tools, and domain

Avoiding silos of knowledge

Holding each other accountable to craftsmanship

Focus - less checking out and succumbing to distraction

Page 4: Pair programming anti patterns

Clumsy Communication

Little interaction

No feedback, questions

Long periods of silence

Breaking apart to solve problem alone

Taking breaks out of sync

Barking or whininghttps://www.flickr.com/photos/robbyrussell/2674833047

Page 5: Pair programming anti patterns

Debating not CollaboratingAnalysis paralysis - Basically arguing (usually politely) for an extended period of time in which there is a clear difference of opinion

Contributing factors:

Lack of respect for pair (or pair’s ability)

Strong opinions/Over-confidence in own ability

Enjoy solving hard problems alone

Misconception that decision is permanent

Page 6: Pair programming anti patterns

Distracted by technologyPhone - text, emails, Facebook, Twitter

Laptop - Keeping your own laptop open while pairing

Android/Apple watch - hard to resist looking at it when it taps you

Instant messaging

http://www.thedustertoday.com/2014/04/technology-today/

Page 7: Pair programming anti patterns

Lack of EmpathyLack of patience with pair’s technical knowledge

Failure to allow person to have a bad day

Unwillingness to give pair time to catch up

Page 8: Pair programming anti patterns

Lack of teamworkThinking of a section of code or even an entire application as “yours”

Tendency not to use words “we” or “our” but instead say “I” or “my”

Finding opportunities to work on problems alone while:

Pair takes break

Pair is at lunch

Working alone over the weekend

Staying late/coming in early

Page 9: Pair programming anti patterns

Self focused

My idea wins no matter what

Won’t give up space/monitor/keyboard

Monitor is not in good position for pair

Drink, phone, etc invading pair’s space

Working close to center of station while pair is smashed against one side of desk

Always want to work on YOUR computer, not pair’s

Use different tools, setup, etc. than rest of team

Page 10: Pair programming anti patterns

Overly timid

Overly compliant - go along to get along

Keeping silent to avoid confrontation or even healthy debate

Feeling inferior to other’s technical ability

Going into “Listen” or “Wait and See” mode while more vocal pair leads

http://post.career.vi/2012/02/tips-for-timid-employees-2/

Page 11: Pair programming anti patterns

Everyone can add value

“It may be that you are not yourself luminous, but that you are a conductor of light. Some people without possessing genius have a remarkable power of stimulating it.”

― Sir Arthur Conan Doyle

Page 12: Pair programming anti patterns

Good Pairing

Active conversation while coding

Both are driving, switch control unceremoniously

Few lengthy debates, quickly pick one idea and code it to learn

Breaks are synchronized and relatively short

Feeling of steady productivity, day goes fast

End of day you feel weary from focused, hard workhttp://wangyan.info/blog/page/2/

Page 13: Pair programming anti patterns

DiscussionWe all do some of these things some of the time.

What is a safe, respectful way to communicate to someone that he or she is engaging in a pairing anti-pattern?

Page 14: Pair programming anti patterns

Strategies to improveIf you notice you are engaging in an anti-pattern, apologize and correct it.

If someone apologizes, accept it graciously and remember that we all have bad days

Ask questions:

Is it OK to work on my computer?

How are things for you today?

Do you have lunch plans? I’m working until 4:30, when are you going home?

Page 15: Pair programming anti patterns

Strategies to improveBe observant:

If your pair is checking their phone, ask if everything is OK or if he or she needs to take a few minutes.

If your pair seems reluctant to take control, deliberately give up the keyboard/mouse

Try to slow down if your pair seems confused. Step away from computer and talk for two minutes, don’t leave anyone behind

If your pair takes a break, take one at the same time.

Pair rotation - Basically flight. Get away from the situation.

Be sure to reflect on how YOU could have improved, don’t focus on the other person’s behavior