29

I have been offered an interesting job, but there's a big caveat for me: they use pair programming.

I hate the idea of pair programming, and I'm probably not suited for it: I like to do frequent pauses, I hate to see someone programming (I would constantly poke the pair away to code myself), I have to be in full control of the machine I'm working on, I like to work listening music, and basically I don't like to being tied to someone else. I'm not even a social person.

I have however never actually worked with true pair programming (besides few times for a short time to help someone else or to solve a complex task together)... so it is pair programming really that bad? And given my attitude, should I refuse the job or should I leave my current one and give a try?


For people that asked about it: I'm looking for a job where formal design and development are used, as I hate my current job where we are "coding in the wild". The company is very interested in my technical profile so they insisted even when I specified I never worked with pair programming and that I probably wouldn't like it (besides being an unsociable loner programmer, I don't like and believe the very concept of pair programming).

Wizard79
  • 7,337
  • 2
  • 43
  • 76

11 Answers11

31

Guess what - nobody likes pair programming at first.

When I first tried pair programming I was against the idea and I had tons of objections similar to yours. I don't like to watch someone else coding, I like to listen to music, I feel I'll be quicker working on my own, I don't want to stop and explain myself constantly, etc etc etc.

Then I tried it. And guess what? It still sucked. We were having all kinds of problems - I wanted to work different hours to the other guy, we had different keyboard settings and shortcuts, our desks didn't work very well for pair programming etc etc.

This went on for about a week. During that week we were rewriting the entire legacy login system for a distributed application. We had to learn how some seriously difficult threading issues work, figure out how remoting sinks worked, change tons and tons of legacy code to work with our new login module and pretty much do some of the most hectic coding I've had to do in my career. After a week of this we deployed it.. and everything just worked. Not a single bug. Not one.

That's when I figured there might be something to this pair programming nonsense. We started to do more pair programming. We even started to force everyone to work in pairs. It rocked. I probably learnt more in a month of doing that than I did in the previous 2 years. The other issues didn't go away. Sometimes you'll be stuck with a pair that you dislike. It's gonna happen. Sometimes you'll struggle to find overlapping working hours. Sometimes you'll want to just work on your own. But the advantages of pair programming are just incredible.

Since then I've always tried to do as much pair programming as possible. It's simply the best way of learning. This company forces everyone to do pair programming? Where do I sign up? It seems to me they are really enlightened and you will be in a really intense working environment. Awesome.

Having said that, make sure that the pairs are rotated often. You don't want to be stuck developing with one other developer for months on end - you'll go out of your mind. We're all human, after all. Also, check that this has been an ongoing practice for a while. If it's not, it's not the end of the world, but if it's an accepted practice it's a massive green light.

Trust me, you want to work for a company like that.

Jaco Pretorius
  • 4,037
  • 2
  • 29
  • 38
19

Pair programming is a great tool! It can be way more efficient – two heads are better than one – and a great way to learn new techniques. Of course, there are other benefits too. But, if you are not buying into it, then you won’t get anything out of it. Given your attitude, it sounds like you would not fit into it at all and it would probably be a waste of time. It looks like your mind is already made up before you even give it a shot.

Muad'Dib
  • 2,608
19

Based on your various comments here, you seem to to have a similar outlook/disposition to myself on the subject. And I have experienced "Pair Programming". And I certainly wouldn't join a company that required me to bite a scorpion. :)

What I'd recommend is: Go with your gut.

If the company would force you to do Pair Programming and you know you don't want to, don't join.

If they'll give you the opportunity to show that you can produce better work faster than any two of their current developers combined, go ahead and prove it.

Before you decide for definite though, I'd certainly agree with the recommendation that you ask to talk to the existing developers there, and get a feel for them as people. (I'd probably recommend that for any new job, regardless of the methodologies used.)

Peter Boughton
  • 4,632
  • 1
  • 31
  • 27
11

I tried pair programming and hated it. I share almost all the doubts and concerns you have expressed against it. I resigned for this very reason.

My personal advice is always against pair, and given your attitude I strongly advice you to not even give it a try.

Wizard
  • 790
10

Let's look at this from another POV: given your predisposition, you're likely doing a disservice to the employer. They certainly don't want to hire someone who "hates" one of their development practices. Have you informed them of your perspective given such a tight-collaborative environment? If not, you're potentially misrepresenting yourself.

As an employer, I would be pretty frustrated to hire someone who knew, coming in, that they wouldn't be happy with the development practices we had put into place. It's a recipe for discontentment and frustration for everyone involved.


Edit Given that they understand where you're coming from (and are willing to take you on, as you mentioned in your comment), why not discuss how you feel with a few developers in the company? It's possible they'll be able to address any concerns or biases you have against PP. It's also important for them to know you're not terribly keen on the idea since you'll be working with them full-time.

It will also give you an opportunity to learn something about the people you'll be working with so closely.

If everyone is on board, I would certainly advocate PP for the same reasons mentioned in the answers here. You have immediate accountability for what you're writing; another set of eyes on your code will likely catch defects or trouble-spots you might otherwise miss; you get great exposure to someone else's perspective on coding (and get to provide your own experience); and the end result is very often much better than you would expect.

I appreciate your bias against PP; there are times I want nothing more than to sit at a computer banging away at a problem, and PP gets frustrating (I'm also an introvert, which means PP leaves me feeling a bit more drained at the end of the day) because someone is always there. This said, the results, in my experience, speak for themselves and I'm much more amicable to it on a regular basis.

bedwyr
  • 2,212
5

I recently went to a pair-programming code retreat. I don't use it at work and am very new to it. I am like you in the sense that I like to have control of my own machine. Several programmers who pair-program a lot kept stressing that pair-programming significantly improves one's coding skills because you get constant feedback, your code is being consistently reviewed, and you are less likely to write hacky code. I agree with the fact that it is a significant change for someone who has never pair-programmed before. However, it is hard to have a strong opinion on the matter unless you try it for an extended period of time.

ysolik
  • 6,320
5

I hate the idea of pair programming

...

I never actually worked with pair programming

You must clarify that first.

You can't say you dislike something without trying it. I personnaly disliked tomato sauce until I actually tasted it.

5

You sound like you are definitely not psyched to do pair programming, but the fact that you asked the question would lead me to believe that you're keeping an open mind to it.

Why not be up-front with the employer and let him know how you feel. If they still think you are the candidate that they want then you could suggest a 2 week trial (or whatever time period works) to see if your intial feeling are valid or not. If the employer declines, it doesn't sound like you really wanted the job to begin with so it's no great loss. If the employer agrees then you will at least know definitively one way or the other for the next job.

Walter
  • 16,136
  • 8
  • 59
  • 95
3

I'm somewhat germophobic. I hate the idea of anyone touching my mouse and keyboard. I hate the idea of touching someone else's mouse and keyboard. I take the long way around the perimeter of the office complex rather than going through the courtyard to get to the cafeteria just so I won't have to touch any door handles.

On the other hand, I like the concept of programming in pairs. I might learn something interesting. Or I might instruct. Either way, it would be a good experience.

My proposal (for myself): do pair programming from a distance. Use Office Live Meeting and share your screen. Dude stays at his desk, I stay at mine.

2

Is there any way you can do some pair programming independently, to get a better feel for it? There seem to be people who like pair programming, and people who don't, and before committing to a job that uses pair programming you really do want to have the feeling you can do it.

Alternately, you can talk to the hiring manager, or somebody in a similar position, and talk this over. They may have use for a non-pair-programmer. They may have experience with people who feel negative about pair programming. Tell the manager why you're uncomfortable with pair programming, but emphasize that you have no experience and are very interested in the job.

Right now, you're in the best possible negotiating position with the company: they've offered, and you haven't accepted yet. The company has an interest in hiring you, and is very unlikely to drop you just because you need to talk to somebody in the company first.

0

If you already know the technology, you will hate it. But if you don't know the technology, you will learn it by PP. If you don't know it and you don't do PP, then you will just sit there and not get anything done.

The worst case possible is if both parties know it and it turns into a race or a pissing contest.