Joel doesn’t “get” XP

Understand up front that I’m not saying that Joel is wrong about how he develops software. Joel’s comment in The Project Aardvark Spec about extreme programming doesn’t seem to fully appreciate what goes on (or is supposed to go on) in an XP project.

As I worked through the screens that would be needed to allow either party to initiate the process, I realized that Aardvark would be just as useful, and radically simpler, if the helper was required to start the whole process. Making this change in the spec took an hour or two. If we had made this change in code, it would have added weeks to the schedule.

Joel is confusing XP with the ad hoc “just dive in and code ’til it’s done” methodology. He uses the statement above to support Big Design Up Front vs. XP. But, this implies that an XP project would have gone and implemented the whole thing before someone finally slapped themselves on the forehead and said “D’oh! We should’ve just made the helper start the process!” Let’s take a look at how a real XP project might have addressed this:

  1. There is up front work in the form of story cards. It’s entirely possible that in creating and estimating the story cards at the beginning of the process, “helper initiates process” and “victim initiates process” may have been two separate cards. They may have had to be two separate cards, since a given story can’t be longer than an iteration. Given that, the “victim initiates process” story just might never have been scheduled in the first place.
  2. Particularly if there are UI questions, it is not unreasonable in an XP project to put some effort into UI mockups in the first iteration. At this point “victim initiates” may suddenly start looking very clumsy, causing the story to get dropped.
  3. Let’s say that the problem was not in the UI, but how the code needs to work in order for the victim to initiate. When going through the story cards at the initial estimation session, one of the programmers might have thought of a potentially tricky aspect of “victim initiates”. If that’s the case, they might get a new card written for a “spike”, which is a brief experiment to test out the potentailly problematic area.
  4. Assuming that “victim initiates” made it all the way through the steps above. It gets scheduled and worked on. Odds are good that the programmers would notice that something’s up mid-iteration. It is legal to change things mid-iteration, if new information arises. Worst case scenario: they go the whole iteration (2 weeks, usually) working on that story before it gets ditched at the next planning session.
  5. XP is not dive in and code. The whole point of XP is written on the cover of Kent Beck’s book: “Embrace Change”. At the beginning of Joel’s Project Aardvark spec, he mentions that the spec is not cast in stone. The problem with many Big Design Up Front (BDUF) projects is not that a spec is written… the problem with many projects is that the spec is cast in stone and requires an elaborate “Change Request” procedure to alter the spec.

    Before you call me an XP lunatic: I don’t think XP is the be-all and end-all development methodology. Different projects need different processes. To me, the biggest thing to come out of XP is not the XP process, but Test Driven Development, which I consider a good thing regardless of how the project itself is planned and run.


4 Responses to “Joel doesn’t “get” XP”

Glen Stampoultzis on August 18th, 2005 7:29 pm:

What I found interesting is that the specification wasn’t actually all that big. 20 pages is not huge as far as specs go so I wouldn’t be classifying it as big-up-front-design.


Michael Koziarski on August 18th, 2005 10:39 pm:

I think someone needs to convert Joel’s spec into a real big design up front spec.

5.4.3.2.3.1.2
a) The victim clicks ok
b) The use case resumes at step 5.4.2.5.3.4.2 of alternate flow A23.4.5
5.4.3.2.3.1.2a
a) The victim clicks cancel
b) The use case resumes at step 5.1.2.4.2.3.4 of main flow M2.4 subflow 43.5


Amol Deshmukh on August 19th, 2005 9:13 am:

Joel says…. “nothing new”. I gotta say, I find most of Joel’s other articles very apt and insightful (read: joel on micro economics)
However this time (to turn his words around): “He’s just wrong on this point and I can’t be any clearer than that.”

In my experience, XP criticism revolves around the following common factors:

1. Criticize XP without ever trying: “How could it possibly work?” Since XP is more of a pragmatic way of accomplishing software development goals (ok, I made that up), philosophical debates like this are a waste of time.

2. Then there’s Joel: “I can’t tell you how strongly I believe in Big Design Up Front, which the proponents of Extreme Programming consider anathema. They’re just wrong on this point and I can’t be any clearer than that.”
Well, the big word people miss here is “Big”. Ofcourse you need to put some thought upfront – brainstorm a few ideas/approaches. The point however is that this does not need to be a heavyweight process. Like have a detailed spec that considers all posibilities only to go back and keep it updated because “the screen color is now decided to be blue instead of pink”.
If you are going to try something without understanding the rationale behind it… well yeah, you are scr***d.

3. 4. 5. etc. There’s more, but there’s work to be done….


tazzzzz on August 19th, 2005 9:31 am:

You’re right about “big” being the key word there. As Glen said, 20 pages is not really that big. I’ve heard of systems where they spent tons of money and *18 months* producing a spec, before the project was finally put out of everyone’s misery. Now *that’s* big design up front.