People talk about agile, being agile, and wanting agile … but few people understand what agile really is. We would like to contribute to the meaning of agile by suggesting that agile is about collaboration. It is more of a peer-to-peer way of software development rather than a top-down, hierarchical way of development. Fundamental to this way of collaboration is a concept called pair programming.
Pair programming basically involves 2 people and 1 keyboard working side by side on a task. In many cases, this can be done remotely using a screen sharing app such as GoToMeeting, Google Hangouts, or Skype.
There are a couple of methods for taking turns at the keyword. One is using test driven development (TDD) where the first programmer writes a test to make the software fail and the second programmer refactors the software until it passes the test. Another method is simply that one programmer developers and the other developer asks questions if there is any uncertainty. Regardless of the method, the point is that two brains are focusing on one task at a time.
The benefits of pair programming are primarily better code and institutional learning. When two people work together on the same piece of code, they are likely to catch each other’s mistakes and come up with the most logical solutions. Also, senior developers are able to share their knowledge with junior developers simply by doing and not necessarily teaching.
Some people say that pair programming is not efficient and a waste of time and resources. This may be true. But, in our experience, pair programming actually saves time and resources because things get done right the first time and there is less stress and drama down the road when software doesn’t work as it should.
If you want to be agile, we recommend that pair programming should be part of your repertoire.