Pair programming is about two people having fun producing good quality code and learning one of each other. What am I saying? Isn’t pair programming two guys that are trying to show off which one is better and arguing with themselves on who’s idea should be implemented? Hmmmm….. I got some experience, so let’s take a closer look.
My adventure with Pairs started a year and a half ago, when Merlyn was interviewing me for a developer position at ComCab. He asked me a question, if I heard about pairing and what are my thoughts about it. After presenting him with my opinion I heard Merlyn’s answer that in here it will never work, and won’t be allowed to waste one developer when the other is coding his bullocks out. When I was hired and we started to work desk-to-desk I didn’t realize that we were paring. Merlyn was explaining to me code and coaching some basics on Test Driven Development. When we thought that I have enough understanding of system complexity and requirement I was taking a “wheel” and coding while he was sitting next to me helping when I stuck or when I was doing something wrong (thanks for that M).
According to XP manifesto and some number of books, that was Pair Programming. Was it good? It was eXtremely good, as it reduced number of mistakes made by me, better quality of a code while taking Merlyn’s opinion on it and I learned something new. And there was fun off course.
After that time I started to code alone as I was able to do so. When Merlyn left company I was doing a little bit of pair programming with someone else. Mostly driving and showing code plus explaining some language specific problems. How did that worked for me, well, I learned some new ways by constructive discussion and questions formed by my partner. That was short chapter in my dev life.
After some time we have started to work on new projects. Agile was officially a Buzz word accepted by management team that gave us opportunity to introduce XP into every day developers life. Still no pairing thought, but there was light at the end of a tunnel. System Architect and project lead, expressed his desire to pair with me during a week or two of initial project development work. That was rock and roll baby. We came out with great ideas. Build up foundation for huge system that is still in place and I have learned some nice juicy tricks from him. Quality of a code was very good, and probably more was done then if someone left us alone to code separately. From time to time I pair with someone else for 10 minutes or more but this is more like solving a problem then really getting job done. I miss pairing.
This time it’s a job interview I was on in ThoughtWorks office. I wasn’t aware that I’m going to be asked to pair with someone. I have submitted some code before and was asked to do some modernization to it, that it works differently. Developer I paired asked me about code structure first, I have explained what I did. Then we discussed possible improvements and then I started to code. From time to time I have asked him a question about what he thinks of this, or that idea, and he gave me his opinion. I do think that this type of interview showed not only my programming skills but also interpersonal. And after this hour of pairing I had a fairly good idea how ThoughtWorks developers are trained to code and design. Good experience for me, and good interview for them.
I’m starting job at ThoughtWorks in September. I cannot wait to learn all the interesting new stuff and pair more with other programmers. I also look forward to different working environment that TW give to developers. I will give you update on how the things are after 6 months. Will see if I will have another opinion on Pairing.
Until then … be cool, and Pair 🙂