Pair Programming: An Extremely Agile Practice
Pair Programming. It's probably one of the most extreme practices of
eXtreme Programming (XP). It's an area of agile software development
that polarises opinion.
The concept is simple enough. Two
developers work side by side on the same piece of work, sharing a
keyboard and screen and working together to produce the code.
The
main advantage of pair programming is usually cited as improving
quality, which also improves productivity further down the line.
Another
advantage is spreading knowledge, as at least two people will know each
area of the system. And it can also help with skills development - a
kind of coaching and mentoring technique with one of the pair more
experienced than the other.
It's also possible to benefit from the theory that two brains are better
than one. A simple way of explaining this is that two people have very
different experiences. One may see a solution that the other doesn't.
It's possible that two minds might lead to solutions that are quicker
to implement and simpler to maintain.
Even without pair
programming, it's quite common for two developers to work together when
they hit a particularly thorny problem. It's usually a little while
before someone declares they are stuck and asks for help. With pair
programming, this situation doesn't really arise, so time is not lost
with single developers perservering on their own.
The other area
it can help with is motivation and retaining focus. Someone is much
less inclined to become distracted and spend time on facebook, for
instance, when they are working with a colleague.
The motivation
advantage reminds me of DIY in my case. I hate DIY! I will put it off
for as long as possible. I'm simply not interested enough, so it
doesn't get done. My solution to this? Invite my father-in-law round!
Once he's in, he's so keen to get started, and I have to get it done
because that's why he came over. He gets me started and keeps me
focused. Hopefully you don't have wide-spread motivation problems in
your team, or you have deeper problems to worry about! But we all go
through short periods like this, and pair programming keeps them to a
minimum.
On the other hand, pair programming also has some
disadvantages.
In the short-term, there is a loss of
productivity, or at least perceived productivity. You have to have
sufficient budget to put two developers on each piece of work. If your
team needs specialist skills, you have to have a team where there are
at least two people with each major skillset. And when you need to hire
another person, you ideally need to hire in pairs.
I think it's
also important that the team members have the right chemistry. That
they spark off each other. And can work closely together without
differing opinions causing endless frustration. There's a loss of
autonomy, having to explain everything and constantly build concensus.
Sometimes you'll be constrained by your partner; other times they may be
going too fast for you.
This reminds me of back-seat drivers.
It's so annoying when someone sitting beside you keeps interfering and
just won't let you drive how you want to! It's tiring and frustrating.
These
are important soft-factors that can make or break pair programming in
practice.
In the end then, like many agile development practices,
you have to look at the unique circumstances of your team, and
understanding these factors, decide for yourself when and if to adopt
pair programming.
There is currently a discussion on pair
programming on my new Agile
Community. If you have something to add, why not go and join in?
Kelly.
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)






Comments
Sindy Loreal replied on Sat, 2012/02/25 - 10:13am