5 comments

[ 1.7 ms ] story [ 24.7 ms ] thread
I consider myself lucky that I haven't had to work with any pair programming tools in the last 15 years. I have, sadly, had to work with numerous waterfall, agile, scrum, and TDD tools. (I refer to their proponents.)
I hear about pair programming first time, what is a typical use of it?
Generally you have a senior programmer paired up with a more junior one. They then take turns typing in code, and discuss what they are doing as they go. Kind of like working out a complex math problem on the chalkboard in school.

The benefits are: 1) transfer of knowledge -- you have at least one other person that knows the thought process behind the code; 2) cleaner code -- when paired up, you are in a semi-teaching mode, so you are more likely to use clean and understandable code. That is, if it is too hard to explain it, and you are required to explain it to the point of understanding, then you will have a tendency to not be as obscure.

The main drawbacks: Often times, when something is sufficiently complex, you really need to concentrate for hours to develop a solution. And having someone (either more junior, or more senior) throwing out random suggestions, when they have no clue what data structures you have built up in your head, is somewhat counter-productive. Another major drawback -- too much transfer of germs. You need to make sure each person has their own keyboard/mouse, and preferably some extra space between them (such as pair programming using remote displays, and not being right on top of each other).

Disclaimer -- I haven't worked in a full-time developer role in any shop that uses pair programming extensively, although I have paired up with other developers from time to time to help them through some C code that they didn't understand.

Here's one pair programming tool I'd like to see. Under Xorg it is possible to configure multiple keyboard/mouse pairs, so that a window clicked on by one mouse is active for its associated keyboard, and another window can be active for a different keyboard/mouse. But, I'd like to see some window manager support, such as changing the color of the title bar to represent which keyboard it is currently connected to.

This general setup is really nice when you are working with someone else, they are typing, and you need to do something on the side such as checking your email. Also works good with Emacs with two windows working on different parts of the same file.