This is probably as ‘agile’ as I ever want to get, and probably one of the more controversial aspects of my job (other than some of the chat that comes out from a male dominated office).

This is the time to put your ego aside, turn your introvert inside out, stop being such a control freak, put your superhero cape away and for god sake brush your teeth!

Pair programming isn’t for everyone, but I for one love it (with the right person of course) and here is why!

1. Skill Transfer

This is where you take off your spandex and roll away the cape, no matter how good you think you are, there is almost always a better way of doing something, or a way to simplify and to make clean. The most I’ve ever got out of PP is learning from the other person, no matter what their skillset is, what forte or flavour they code in, someone always has a nifty trick or a new way to do something. Mostly for me, I’ve learnt how to improve my workflow. Learning how to properly provision an environment for development, or how to use the power of Grunt to build my frontend for deployment. Its a sad thing, when someone doesn’t want to learn something new, either sad or naive, or maybe they’re just a dick!

2. Sanity Check

This is another ego/superhero moment. Sometimes we miss things, whether it be spelling your namespace wrong, missing a closing bracket, locking the front door, leaving the oven on. The list is endless, and a human trait is to sometimes get things wrong. If everyone got everything right, then everyone would win, sport would be pretty bland, and we probably wouldn’t invent anything new. If theres no problem, there is no need to innovate. Think of the person next to you as your safety net, or your very own fireman's trampoline. Just a note to all you haters that blast people for getting things wrong, tough shit hombre, thats life!

3. Knowledge Share

This isn’t like a skills transfer, more that you have two developers who know the ins and outs of the code and how the application works. This is always helpful, I wouldn’t want to be the sole guy everyone comes to about everything, I’d get bored…and annoyed. Its also good when the inevitable happens, and a developer (or anyone in a job because it’s a normal thing to do) moves onto a new role.

4. Make ‘Friends’

Say you work in a team of 8 developers but you’re all working on the same mammoth application. Your pairing may change every week, and that’s a great way to talk to ‘Fred’ the introvert who sits in the corner dribbling over server architecture design. ‘Fred’ might actually have a bit more to him than that, and after your time together (this is not a love story) you might actually get on, then again, he or you, might just stay introvert and sad, and dribble in your separate corners.

5. Faster Coding Skillz

I’m not entirely sure this is true but I’m going to write it anyway, why, because its my medium! My opinion is that PP is quicker. No need to revisit or rewrite, the instant code review produces cleaner code in less time, and if you do need to revisit, at least two people have oversight over the code.

So there you have it, I’ll be sure to write up a followup about the disadvantages, but for me, not enjoying PP is more about a clash of personalities with your fellow programmer. Some of them really won’t take off their superhero cape for the day.