Paired Programming


Braintree - paired programming is part of the culture

When is paired programming not productive

Private offices are more productive - Joel Spolsky

Group Brainstorming does not improve productivity or creativity

Microsoft and Fog Creek Software - Joel Spolsky has private developer offices so developers won't be interrupted by every phone call and conversation and can stay in the flow/zone and concentrate without interruption.


When I worked for TeleAtlas we briefly TDD pair programmed continuously around the globe. We had developers on the project spread across enough time-zones that we kept a single development going 24x7 with various devs joining and leaving with their time-zone work hours. We sometimes even had more than two devs pairing simultaneously too. It was a beautiful thing.

We ran the IDE on a high powered central development system in the data-center and all developers used VNC to connect to the session. This avoided the issues of hosting on a particular remote developers system. Asynchronous speeds, when hosting on a remote developers system meant the other clients would have poor screen update speed. Sessions would be suspended if connectivity went down at a remote host - rarely happened in the data-center. Also, if the session was hosted on a developers system it was a pain to juggle the session to another system if he/she needed to leave or reboot the system.

We would start by discussing the goal and basic architecture. The first dev would write a test and tell the next dev to write the implementation to fix the failing test. The next dev would write the implementation and then write the next test. Saying to the first or next dev, "Fix that". The cycle would repeat and we would get into a cadence. All developers stayed engaged.

We would frequently perform API and framework research, create diagrams, or documentation and collaborate with others on another system as necessary.

Comments

Popular posts from this blog

Sites, Newsletters, and Blogs

Oracle JDBC ReadTimeout QueryTimeout