Lately, Sam and I have been doing some Pair Programming on some new .Net classes that will comprise core functionality for the project we are working on. Pair Programming is the process where two developers work together on software problems, each taking turns at the keyboard, each contributing their own ideas and solutions, and each taking turns creating unit tests and refactoring the code into a final product. It comes out the Extreme Programming (XP) method of developing software. In the past, I personally have used this method to work through some thorny problems, but I can't begin to tell you how invaluable our experiences have been lately to work together and think through some issues and solve some problems.
One tool we are using to develop our unit tests is NUnit. Ron Jeffries, a great XP evangelist, has been using it extensively in his own Pair Programming with C# and describes some of his own tips and techniques with NUnit. I have used some of the other unit testing software, but I believe this one is the best out there!
One advantage we have right now in being able to do some Pair Programming is that we are in the same on-site location. We had previously been working from home on other projects. I am not sure if we would have been able to effectively do Pair Programming remotely.
Of course, we are not doing all our coding using Pair Programming â€“ we mostly use it when it really helps to clarify some issues in code and design. One interesting aspect I have found is that it brings a certain kind of vulnerability. You may make the same kind of mistakes you make alone that you normally wouldnâ€™t see, but the other developer can spot them and point them out. I have found that as you welcome these observations (and provide the same when itâ€™s the other personâ€™s turn at the keyboard! :-)), you can produce bug free code the first time.
Does anyone else have experiences with Pair Programming? How about experiences with remote Pair Programming? Is that possible (through instant messenger or other chat services)? I am interested to know others' experiences and viewpoints on these topics in XP as applied to .Net development.