InfoQ

News

Common misconceptions about paired programming

Posted by Floyd Marinescu on Nov 03, 2006 01:51 PM

Community
Agile
Topics
Agile Techniques ,
Teamwork
Tags
Co-Located Teams ,
Pair Programming ,
XP
Paired programming is an agile practice that is the source of much debate. Martin Fowler, one of the signatories of the Agile Alliance and well known author and thought leader, has written an article on common misconceptions with paired programming.  The misconceptions, in brief summary, are:
  • Doing Agile requires doing pair programming.  "The manifesto doesn't mention pair programming and most agile methods don't make it part of their approach."
  • XP requires pair programming. XP projects usually do XP but "like any agile method, expects a team to choose its own process."
  • People assuming they just won't like pair programming. Most people like it after they try it, others don't do it right and are left with a false impression.
  • Pair-Programming halves the productivity of developers.  Better designs, less mistakes, better understanding offsets the decrease in ability to type code.
  • It's only worth pairing on complex code, not boring rote code. Martin mostly agrees with this but points out that if the code is boring, maybe the design is bad. :)
On the point about halving productivity, Alistair Cockburn & Laurie Williams' XP2000 paper on the cost and benefits of pair programming concluded that together pairs spent 15% more time on a problem together than apart, but this is "repaid in shorter and less expensive testing, quality assurance, and field support."  Another empiracle study which included Ward Cunningham and Ron Jeffries showed that by the third pairing attempt,  paired programmers were producing 19% better code for only 10% more programmer-hours.

Ward Cunningham's famous C2 wiki also includes a pair programming page with another set of misconceptions:
  • Pairing is primarily a micro-level source code review.
  • Pairing will halve my team's productivity (same as Martin's).
  • Pairing sounds like an unpleasant task. It would drive me crazy (same as Martins).
  • We don't do pair programming here.  But infact people often get together to solve bugs which is a form of pair programming.
  • Pair programming is a training program.
Martin's write-up included an important lesson, which is a good one for all of us:
I should also point out that to most XPers I know the question of whether a team is XP or not is uninteresting; the real issue is whether a team is effective.

Related Sponsor

VersionOne is recognized by Agile practitioners as the leader in Agile project management tools. Companies such as Adobe, BBC, CNN, Dow, HP, IBM, Sony and 3M have turned to VersionOne to help deliver greater value to their customers.

3 comments

Reply

"if the code is boring, maybe the design is bad" by Jean Barbu Posted Nov 7, 2006 10:31 AM
Re: by Jackie Van Posted Nov 18, 2008 8:46 AM
What about pair programming where only one half is a programmer? by James Taylor Posted Nov 9, 2006 12:46 PM
  1. Not 100% true. Try developing any nowadays web application UI when selecting a radio button should display new 10 controls, disable other 5 and hides the rest of it. Find that challenging?

  2. How about using a business rules management approach and having a programmer and a business analyst be the pair developing the "code"? Lots of business rules customers do that and get great results - the business person understands the problem, the programmer has the technical skills to understand the objects involved and performance implications and they turn out a lot of accurate rules quickly.
    I wrote an article about rules and agile but for some reason did not mention this scenario. I also wrote a piece on how rules close the gap between IT and the business here on my blog. Would love to know what people think
    JT www.edmblog.com

  3. Back to top

    Re:

    Nov 18, 2008 8:46 AM by Jackie Van

    Wholesale lingerie directly from China?
    As a famous brand and specialized manufacturer of sexy clothing in China. We supply the international market with fashionable sexy lingerie and sexy costume since 2002. With advanced technology,all our products are of high quality. Now we have clients all around the world. Lingerie Wholesale and OEM are welcomed!
    As a Lingerie Manufacturer, Charmingirl has standard workshop and production line, professional designers and experienced workers.
    We do Wholesale Underwear,
    Lingerie Wholesale, including corset and bustier,
    Sexy Lingerie Wholesale, including bikini, underwear
    Lingerie Wholesale, and Babydolls, Sexy Lingerie Wholesale, and
    Sexy Lingerie Wholesale including sleepwear,clubwear.
    Lingerie Wholesale from China: Lingerie China, you will find the
    Leather Lingerie and PVC Lingerie, also you can buy
    Christmas Costume and Xmas Lingerie
    for your Christmas Lingerie Christmas day.
    Our Wholesale center: Sexy Lingerie Wholesale can do Lingerie Wholesale online.
    Halloween Costume,
    also wholesale Adult Costume with fashion Babydoll Babydoll, and bra and panties Bra and Panties, Sexy Uniform Sexy Uniform is also our major products.
    we have strong ability on production, research and technology, advanced facilities that is imported fromGermany and Japan, now our monthly output is 100000 pcs.

Exclusive Content

Clojure

Rich Hickey discusses Clojure features and syntax, example code, functional programming, concurrency semantics, transactions, software transactional memory, agents, implementation and pain points.

Composite Oriented Programming with Qi4j

We introduce the concept of Composite Oriented Programming, and show how it avoids the issues with OOP and reignites the hope of being able to compose domain models with reusable pieces.

Dan Farino About MySpace’s Architecture

Dan Farino talks about the system architecture and the challenges faced when building a very large online community. Dan explains how a .NET product scales on hundreds of servers.

Principles and Practices of Lean-Agile Software Development

Alan Shalloway, CEO and founder of Net Objectives, presents the Lean software development principles and practices and how they can benefit to Agile practitioners.

The Maxine VM

Bernd Mathiske discusses Maxine VM, Java compatibility, swapping major VM components, research areas, Object handling, code examples, optimizing compiler, snippets, bytecode generation, JNI and JIT.

Joe Armstrong About Erlang

Joe Armstrong speaks on various aspects of the Erlang language, presenting its roots, how it compares with other languages and why it has become popular these days.

The Limits of Code Optimization: a new Singleton Pattern Implementation

The java double-check singleton pattern is not thread safe and can’t be fixed. In this article, Dr. Alexey Yakubovich provides an implementation of the Singleton pattern that he claims is thread-safe.

Pressure and Performance – The CTO's Dilemma

Diana and Jim talk about patterns observed in CTOs' activity. CTOs emerge as real people caring for other people in their organization, and are put under a lot of pressure and constraints.