I started my professional programming career at ThoughtWorks five years ago by pairing. Pairing is a fine art, and when practiced well can produce amazing results. The only ting to keep in mind is that a great deal of introspection is required by each member of the pair, and slightly different approaches are needed when - a junior and a senior pair with the junior ramping up - a junior and a senior pair with the senior ramping up - a junior and senior pair when both a familar with the codbase and/or technology - people of similar experience pair
bq. if you canâ€™t explain it in simple words â€“ you donâ€™t understand it
Both Einstein and Feynman have been attributed with similar phrasing. Feynman used to say, "If you can't explain something to a first year student, then you haven't really understood it" and Einstein said "You do not really understand something unless you can explain it to your grandmother"
I also agree pair programming is fun. But I have read it in several places that's the 2 people working in pair should be of same competency. Otherwise the mentoring can become spoon feeding. Infact XP(Extreme Programming) also suggest that level of programmer doing pair programming should be almost equal. What do you think?
I cut my teeth on paired programming at Pivotal Labs, and love it for many of the reasons already cited. When pairing, the day seems to go by very quickly and a lot gets accomplished. I also notice that I don't get distracted and check email or surf the web nearly as frequently.
There are a couple of caveats, though. One I've noticed is that if someone with a strong, outgoing personality is paired up with a shy programmer, sometimes the strong one can dominate the situation and wind up bearing most of the effort. A good way to avoid this is to find a natural switching pattern. One example is for one programmer to write a test, and the other programmer making it pass, and then vice-versa.
It's great to see this much positive response. I have also done pair programming with my senior but i afraid of suggesting something because he was too senior and experienced then me. but I really loved pair programming and learnt a lot. and yeah am pretty sure that scope of learning is very vast in pair programming.
Jaime - comparison to nude modeling was spot on!
Adam, Hashrocket is one of groups that inspired me to try pair-programming. You and Pivotal Labs seem well established companies that say pairing as a core practice has worked great for them.
BTW I've seen a nice argument for pair programming in a presentation by "Ian McFarland":http://twitter.com/imf from Pivotal:
bq. And stop whining! You do it already when you get stuck on something.
(slides at: http://bit.ly/8tisa2)
I found out though Pair Programming doesn't always impose self-discipline. I needed to learn when to shut up and let the driver drive when I navigate. Wasn't easy - perhaps it's that feminine side of me (-: Do you guys know good tutorials or books? Googling for "navigator tips" yields interesting results - but not very helpful in this particular case.
I remember my first pair-programming session being very similar to nude modelling. Much less nudity, but all the fear of exposure to others. Developers always seem to start any code sharing with the phrase, "Please don't judge this too harshly..." or "I was under a deadline...", and so on. It takes guts to let someone watch you code in real time, including any stupid mistakes you make along the way.
By the end it really was more fun. And productive. If it was feasible with my current contract, I'd love to pair because you learn so much, and it's a natural cure for my ADD :)
During my Pragmatic Studios rails training years ago, Dave Thomas said "I've never pair programmed and NOT learned something new". I absolutely agree.
Pairing really is one of the best ways to learn. Glad to hear its working well for you and your team. We are big advocates of pairing all the time at Hashrocket.