Live data from Hacker News

Where Pair Programming Fails for Me

tersesystems.com

1–10 of 41 posts

Re: Where Pair Programming Fails for Me

#2
After a few months of pair programming, I can only agree. At points, when my partner saw a better way of doing things, it was insightful. In the end, however, we found that it was more efficient to split up the work, merging code when necessary.

Re: Where Pair Programming Fails for Me

#3
I got to the point where the other person started typing when it wasn't their turn.

First, pair programming has to be between near-equals, or it just doesn't work. If one person knows a lot more than the other, most of the time is spent in training.

Second, if the other person just starts typing, it isn't really pair programming. It's what we call 'peer programming' where you peer over someone's shoulder and they do all the work.

'Peer programming' happens a lot with mis-matched skill levels.

I didn't read the rest, but I assume it's all as much a bastardization of Pair Programming as the first bit.

PP didn't fail you. Your coworkers weren't using it.

Re: Where Pair Programming Fails for Me

#4

I got to the point where the other person started typing when it wasn't their turn. First, pair programming has to be between near-equals, or it just doesn't work. If one person knows a lot more than the other, most of the time is spent in training. Second, if the other person just starts typing, it isn't really pair programming. It's what we call 'peer programming' where you peer over someone's shoulder and they do…

> First, pair programming has to be between near-equals, or it just doesn't work.

That depends on what you think the goal of pair programming is.

> If one person knows a lot more than the other, most of the time is spent in training.

Which is part of the intended effect of pair programming. It forces everyone to share their knowledge with everyone else both about programming, and about the code base. This brings new people up to speed quicker, allows the more experience to better share their knowledge, and protects the company from having too much knowledge locked up in one individual.

Re: Where Pair Programming Fails for Me

#5

I got to the point where the other person started typing when it wasn't their turn. First, pair programming has to be between near-equals, or it just doesn't work. If one person knows a lot more than the other, most of the time is spent in training. Second, if the other person just starts typing, it isn't really pair programming. It's what we call 'peer programming' where you peer over someone's shoulder and they do…

This seems like a common excuse I see to criticisms of pair programming. If this technique is so fragile, perhaps its just better to admit up front that it is delicate and easy to get wrong, and only works in particular situations with particular people.

Re: Where Pair Programming Fails for Me

#6
I've pair programmed quite sucessfuly for several years. However, it is a very hard practice. It requires trust between people, first and foremost. Besides that, it requires knowledge that you can't do it all day. It is too intense and tiresome, and this lack of slack is bad for creative thinking. About the pride: it is like co-foundind a startup, where you build something toguether with other people (it is all yours).

Some other links:

- Dijkstra Pair Programming: http://c2.com/cgi/wiki?DijkstraPairProgramming

- Some notes on Pair Programming http://wp.me/puh71-1y

- How Pair Programming Really Works: http://bit.ly/5oOd4C

- Why I Don't Like Pair Programming (and Why I Left Pivotal): http://mwilden.blogspot.com/2009/11/why-i-dont-like-pair-pro...

- The real motivation behind pair programming: http://bit.ly/9DNurb

Re: Where Pair Programming Fails for Me

#7
post #4

I got to the point where the other person started typing when it wasn't their turn. First, pair programming has to be between near-equals, or it just doesn't work. If one person knows a lot more than the other, most of the time is spent in training. Second, if the other person just starts typing, it isn't really pair programming. It's what we call 'peer programming' where you peer over someone's shoulder and they do…

> First, pair programming has to be between near-equals, or it just doesn't work. That depends on what you think the goal of pair programming is. > If one person knows a lot more than the other, most of the time is spent in training. Which is part of the intended effect of pair programming. It forces everyone to share their knowledge with everyone else both about programming, and about the code base. This brings new…

I agree.

To the GP's point though, they still weren't doing effective pairing for the 'training' or 'coaching' scenario. The pairing was contentious and out of balance. The coach didn't do any coaching.

> ...if I paused too long, or seemed to be typing the wrong thing -- my pair had another keyboard, and he would type over me to try to “finish the sentence” rather than talk to me.

In this case, a coach should engage the driver. Ask about what he's thinking and nudge him in the correct direction if needed. Coaching is a lot like driving school. The coach uses his brakes (keyboard) very seldom. If the coach is using his brakes very often, it is as likely as not that the coach is the problem (too scared, poor instruction, etc) and not the driver.

There are simple tricks. I usually put my keyboard behind the monitor. I've also turned my keyboard around so that I'm looking at the keys upside down. Those both take physical effort to get the keyboard in position to type. Another strategy that I've heard is oven mitts (I really want to try this one!) :)

Edit: Also, another strike against his coach (though this is more programming related..)

> To me, this was “refactor mercilessly” and “once and only once.” But to my partner, this was a violation of “do the simplest thing that could possibly work.”

I'd agree with the OP here. Simplest thing is how you get tests to pass. DRYness is a property of code quality. They are orthogonal. Refactor mercilessly when you have green tests in order to keep quality high. Do the simplest thing when you have a red test in order to deliver features.

Re: Where Pair Programming Fails for Me

#9
"And if I was writing code, I found something very interesting: I don’t think in English when I write code. I think in code first, and I can translate written code to English. When I was trying to talk to people when I was writing code, I found that I’d have to write pseudocode and then talk to them about it -- and when my pair wanted me to talk about code, he wanted me to stop typing. But if I stopped typing, I couldn’t describe what I was doing. Every time I tried to write code and talk to my partner at the same time, I could feel the lurch between what I could feel -- the complex shape of it in my head -- and what I was having to say."

(emphasis mine). What an incredibly familiar description. Does anyone else ever feel this way? This is why in situations where I'm trying to describe a solution I end up just grabbing the keyboard, doing it myself, and letting the code talk for itself.

For me, pair programming comes easily when describing a solution that can be simply defined and understood. Doesn't matter how difficult the problem itself is. Pair programming becomes more difficult once you have to interrupt your coding to facilitate the process. As an introvert, this comes incredibly unnaturally to me.

Re: Where Pair Programming Fails for Me

#10
-------- http://ta.gg/4wt ------

-------- http://ta.gg/4wt ------

-------- http://ta.gg/4wt ------ Gold autumn, personality Men’s clothing + Shoes, Travel bag that grabs an eye coat + Chao packet Free transport

-------- http://ta.gg/4wt ------

-------- http://ta.gg/4wt ------

-------- http://ta.gg/4wt ------

Post reply on HN