Friday, March 23, 2007

Pair Programming

So I have been a long time doubter of pair programming.

I just spent 2 - 1/2 days pairing with this man.

I have to say - I really enjoyed it. Part of it is that I just love slinging code and I became a technical manager of sorts (in addition to remaining a technologist dude) 7 months ago. Pairing is a great way for me to get my code fix. Even after 7 months of not slinging heaps of code, certain corners of my brain started turning off. It was great to dig back in and light those corners back up. I even came up with a good idea to simplify something and received my "space man merit badge".

Our small team has been experimenting with pair programming for those that want to. It has been very successful.

I think that some of it is the fact that we are dealing with so much new (at least to us) technology. Pairing is (obviously to me now) a great way to spread knowledge, learn, etc.

I certainly don't think that 8 hours of pair programming every day is appropriate - at least for me or probably most people. But it is clearly a great thing to do *at least* a couple times per week or some such. I guess it depends on your role etc.

Anyways, I love it when a long standing belief / opinion of mine changes. It helps me know that I am pushing myself outside of my comfort zone and pushing myself. One thing is obvious (or should be) about the world we all live in now. Those that stop learning are toast. If you aren't learning new things (e.g., about your domain, techniques (e.g., agile, lean, xp, etc.), technology, negotiating/people skills, hospitals/manufacturing) you are going to hit a wall. It is amazing how comfortable you get with this concept once you sign up with life-time learning. I am constantly amazed at how many people don't view the world this way.


Sarge said...

This article (from Kawasaki-san) discusses the difference between "performance goals" and "learning goals". For some time now I have felt that my focus on continual learning was a tremendous competitive advantage; thanks for giving away my trade secret. ;)

I, too, think there is a place for pair programming. For me, it's once or twice a month. But I think the rate of pairing is sensitive not only to the individuals (not in-duh-viduals) involved but also to the technology and problem domain. Climbing the learning curve definitely seems like a time to have more pairing.

Sarge said...

Oops. That URL was supposed to be Kawasaki-san.

fuzzy said...

Thanks for the link Sarge.

Yeah, I agree that it depends where you are at in a learning curve on how much pairing is appropriate.

There are of course all sorts of other situations where it can be helpful. For example a new employee, a struggling employee, a manager like dude who wants to get back into the groove, once a month to compare notes on how people are using tools (Patrick and I both had a - wait! how did you make emacs / eclipse / etc. do that!? moment).

So anyway, it is just really another tool in the toolbox that should be used by teams as they see fit.