On the XP mailing list a discussion has been going on recently on how a student at a presentation commented that XP seemed to be fairly heavy. Now, I know that “heavy” and “light” are rather passé terms for describing methodologies these days, but you know, the student was right – for a certain point of view. In the immortal words of Ben Kenobi, “many of the truths that we cling to depend on our point of view.”
In contrast to the “code-and-fix” approach that students normally experience, XP is a heavyweight process. I mean, you spend nearly a third of your time not writing code, and at least half of the time you do spend writing code is actually writing tests. And you have to stop writing that code over and over to run those tests. And you need to stop and explain what you’re writing to somebody sitting next to you all the time. And you probably don’t go more than a couple of days at most without getting your business rep to come over and have a look at what you’ve done. Seesh, how is anyone meant to get any work done with all this chatter?
Compare this to a code-and-fix approach, and it’s very heavy. Interestingly enough, it’s also heavy for someone used to a BDUF approach, at the junior coder level.
BDUF: You, the junior coder, gets tossed a spec. You go away for a couple of weeks of solid coding. You toss the code over the wall to the testers and get another spec. Defect reports come back, you fix them, toss the code over the wall again. Essentially, you spend nearly all the time coding. You don’t talk to the customer (the analyst does that), you don’t talk to the analyst (the senior programmer does that), you don’t talk to the senior programmer (they give you specs), you don’t talk to the testers (you give them code, they give you defects). You just code. All the weight in a heavyweight process is higher up the chain (to the extent that at the top, with the architect, they are so weighted down that they don’t code anymore).
The weight in an Agile process is fairly evenly distributed. This means that parts of the chain carry more weight than before, even though the chain as a whole carries less.
(This also highlights the difference between efficient and effective. The BDUF coder is being very efficient)