Pair programming Issues


Thoughts

“Pair programming is a software development practice in which two programmers work together at one work station” http://en.wikipedia.org/wiki/Pair_programming.

pairing

I’ve worked with pair programming at just 1 company for 9 months, the results were both good and bad.

During the time when you are pairing you share your computer with another person. You also share your virtual life details, such as:

  • organization: how you organize your documents, projects, music, etc.
  • choice: which applications you use and how you use it, like: themes, hotkeys and configurations.
  • skills: typing velocity, how much you know about the application that you’re developing.

Off course, when these pairs get along with each other sharing information becomes productive.

The one billion dollar question is: “What happens when the pair does not get along?

not_pair

If both people aren’t open to learning with from the experience, the day by day can become difficult.

Pair programming doesn’t work when one party feels the result could be better if the work was done alone. In this case, pair programming is an intrusive and negative experience.

Some people doesn’t understand this situation. To make it easier to understand I usually like to compare pair programming to driving a car and having someone beside you.

First case: Going by a known path.

Imagine you’re going to a party, you’re driving your car and you know the way to go there. Beside you is someone, a friend or just an acquaintance.

If you have some doubt how to get the place or make some mistake this person can help you, suggest a better way or street.

When you arrive in the party you’ve learned something or at least both of you have had a great time together.

Second case: Learning new path.

Now, imagine you’re going to another party. Beside you is another friend or acquaintance.

During the way you ask for some help. That person helps you as best as possible.

When you arrive in the party you’ve learned a good path and both had a great experience.

Third case: The beginning of the end.

Now, imagine you’re going to a party, doesn’t matter if you know how to get there. Beside you have someone again.

You are driving but now this person prefers to do the driving. If you make some mistake that person says “It would be better if I was driving.” or “If I was driving it wouldn’t have happened.”. What would you do?

Probably both of you arrive at the party in a bad mood and will try to avoid sharing the same the car again.

Maybe if you were in the car a debate would start. But, during pair programming you’re in a company and some words wouldn’t and shouldn’t be said.

Think about it, before sharing your computer with someone.
It’s better to both if you enjoy it.

pairing

PS: Thank you Desi for reviewing this post. I’m a english learner and Desi have been helping me.
PS1: To read in portuguese click here.



9 Responses to “Pair programming Issues”

  1. Richard Conroy

    Pair Programming isn’t an automatic discipline. Just because we are software professionals doesn’t mean we are immediately able to work in this manner. It is a practice that must be learned.

    When people face pairing for the first time, many of the things you mention here are a concern – that you will be in close proximity to somebody that you will not enjoy being around.

    You can fix some of the minor things. Many organisations that pair program extensively will set up dedicated pairing environments with separate workstations. This has multiple advantages:
    – your personal files remain private
    – the pairing workstation can be standardised
    – the pair team is isolated from distractions and their discussions will not distract others

    You usually see a lot of other processes get introduced, like no phones/email in the pair lab.

    Reply
  2. Urs Enzler

    Nice post.
    I think that to become good in pair programming, the developers need to practice it. There are developers that have to get used to it because they are first nervous to show how they work. The team needs to find a state of mind in which all members realize that it is not about finding the weakness of an individual but the strength of the pair. Once this mind shift has happend, the individuals see that pair programming is a great way to learn a lot of stuff (micro-process [how do I work, compared to my mate], tools, new shortcuts, TDD, and a lot more] in very little time. And the code gets better, too ;-)

    We don’t pair programm all the time, but if a team meber feels that pairing would help him with his current problem then he is encouraged to get a team member beside him. This has even a positive effect on development velocity, because rather than spending a lot of time searching a solution for himself, the pair normally find a way much faster, with less technical debt in the code.

    Cheers,
    Urs

    Reply
  3. Dave G

    I’m not interested in pair programming, regardless of how much more productive it may be. That’s why, in the past, I’ve told recruiters not to send me on interviews for positions that would require me to pair program.

    To me, it’s no different than other workplace factors I might consider when looking for a new job. I prefer to code alone, so as long as there are jobs that let me do that, (and that’s the majority of development jobs) that’s all I’m willing to do.

    Reply
  4. carol

    I think pairing is especially useful for debugging or for learning code already written. But for creating new code it can be useful to think alone, without distractins

    Reply
  5. Veera

    I’ve never did any pair programming. But I’m sure it would be interesting to try it out. Lemme wait for an opportunity. :)

    Reply
  6. gloriajw

    I have to agree with Carol. I prefer to write code alone, in quiet mediation, then review it with peers. Pair programming is distracting for me, especially when working out all of the permutations of tough algorithms.

    Reply
  7. blackgeneral

    I have been pair programming full time for more than 3 years. I would not like to work for a company that does not do pair programming. I feel energized and ‘in the zone’ when working with my colleagues who are used to pair programming.

    I have a couple open source projects I contribute to in my spare time. It can be fun working alone and experimenting with new stuff, but when it comes to serious work, I absolutely prefer pair programming. This is because I am a lot more productive, less frustrated, and I learn a lot from my pair (especially when you rotate pairs frequently). Pair programming has vastly improved my social and communication skills. Pairing with people a lot more experienced than me has greatly improved my programming skills, and has inspired me to become better coder.

    I am a pair programming convert. If a company does not do pair programming, I would not like to work for them, period.

    Reply
  8. Kevin Taylor

    Pairing is hard. Pairing is not for everyone.

    After a full day of pairing my head hurts. But, I also know that that is when I write “my” best code.

    With that said, I also enjoy quietly codesmithing alone, getting into my personal zone. Usually it is on low risk stories, spikes, personal projects, or exploratory coding.

    Reply
  9. Rosie08

    Pair programming is almost all we do at my university. I am not personally a fan, mostly because it tends not to happen the way it is supposed to. The few times the situation is ideal, pairing does make things much easier.

    Pros:
    -If you make a mistake, your partner will almost always catch it.
    -The workload is greatly decreased; therefore, productivity is greatly increased
    -There’s always someone to talk to and brainstorm with that knows the code as well as you do

    Cons:
    -Pride can get in the way. Being self conscious about your coding ability can make pair programming very intimidating.
    -In a university setting it can be frustrating knowing that your success relies on the cooperation of your partner.
    -Also, having time to meet can be difficult.
    -Often it turns into a situation in which each person works on part of the project on their own and then they later compile that work.

    As an add-on, one of the points my professors made when trying to sell the idea of pair programming to us was that, according to “many studies,” women prefer pair programming. I’m still not sure how I feel about this. “They” say it is because women like to be in groups.

    Take it as you will. But the point is I guess that you really have to know the environment you are in, what kind of person you are and what kind of person you will be working with is, in order for pairing to work.

    Reply

Leave a Reply