Continuing Our Solitary Existence #xp #agile #scrum #programming
It’s thought that programmers have a solitary existence, in hacker movies they are often depicted as being behind a screen in the dark working on their own. Even the popular media images of programmers that are loners. As any programmer knows this is far for the truth, collaboration mostly benefits development. Sharing tasks and bouncing ideas of other developers makes the end products better. Yet with the exception of discussions the actual development task is performed by one person behind one computer.
There are many studies which show that there are even better ways to work, collaboratively create and discuss. Taking all the benefits of working as a team and sharing knowledge reduced to one continuous process rather than incremental tasks. It’s called pair programming, and studies have shown pairs can deliver 127% of what they deliver working on their own.
“The official definition of pair programming is two programmers working together, side by side, at one computer collaborating on the same analysis, design, implementation, and test. In other words, consider it like two programmers using one pencil.” “[These] teams of two programmers work simultaneously on the same design, algorithm, code, or test. Sitting shoulder to shoulder at one computer, one member of the pair is the “designated driver,” and controls the keyboard and mouse while actively creating code.” The other programmer performs the task of the co-pilot. Both programmers reverse roles at intervals. In other instances they swap partners to facilitate knowledge sharing.
It’s Aristotle who said: ‘The whole is greater than the sum of its parts.’ The usual development cycle consists of developing, testing and reviewing code as separate task done by different people, and with paired programmers they can be performing these tasks simultaneously. This reduces the time spend in the long run.
And as Jensen asks: “How many times have you been stuck removing an error from a design or program with no success? When everything else failed, you went to your neighbor programmer, the casual observer, to see if you could get some assistance. While explaining the problem, you have a flash of inspiration, and the problem is quickly solved. How much time did you waste before asking a neighbor for insight?”