Saturday, May 08, 2010

Egoless Programming

Egoless programming is a way of developing systems that's based on the idea that, with a few unique exceptions, the group is always wiser than the individual. The programmer is asked to shed her or his ego and become an instrument of the group. And the device used to accomplish that end is the structured walkthrough, where the developer submits her work to the group for a step by step review. But developers, like other creatives, do have egos. So how do we protect those egos, even as the individual developers bend to the superior wisdom of the group? The solution to that paradox is in the exact nature of the structured walkthrough. To begin with, attendance is by invitation only, and the developer gets to send out the invitations. The setting is informal. The developer provides snacks and drinks. And there is an iron-clad rule about what the reviewers can and cannot do. All they can do is ask questions about the way the code works, about things they don't understand. They can't offer suggestions, they can't express opinions, and, if one of their questions happens to uncover a problem, they can't help solve it. That's the developer's job, and the developers don't fix their code in the walkthrough. They take the questions away and solve the problems in their own time, in their own way. It turns out that in structured walkthroughs it's the reviewers who have to leave their egos outside the door. 

No comments: