Christopher Smith wrote:

1) Ward and Kent were a team going at least as far back to their days at Tektronix in the 80's. Almost all of Kent's "fame" and "success" was in collaboration with Ward. So, suggesting Kent was accomplished but Ward was not is just silly.
2) You heard of CRC cards?
3) You heard of Wiki's?
4) You heard of Design Patterns?

Where's the *code*?

I suggested Beck because of JUnit. It seems to be the only project of any size this bunch has done that has *worked*. And, JUnit, in its original incarnation, wasn't even that large.

They have the Eric Raymond problem. Loud mouth, many publications, little code.

They lead the engineering effort. They did not lead the project. Even if you make all the right engineering decisions, it is entirely possible (even likely) that your project will be a failure. Such is life.

No. And this is why software development never gets any better. "It's nobody's fault." Spare me.

When I make right engineering decisions, a chip works. When someone else makes right engineering decisions, a building stands. When we make bad decisions, things fail.

A process that does not work because of "political considerations" still
*does not work*.
Hmm... do you have a process that prevents your company from being acquired by a big multinational that "shitcans" everyone?

You finish the project.  On time.  When you said it would be delivered.

This bunch said they could get the payroll systems integrated in *4 years*. That's 1999. Everybody got canned in 2000. After the program was clearly a failure. I have seen mediocre teams deliver payroll program unifications in 4 years.

How many years are they supposed to get? Classic XP--the blame is always somewhere else.

First of all, they delivered something that handled the payroll for ~10,000 employees just over a year after Beck arrived (and you can imagine it took a while to get XP practices in place, particularly since they were inventing the methodology as they went along).

Which was several thousand less than the smallest *working* payroll program. And they couldn't manage to scale it up because they had fundamental architectural problems which XP is supposed to prevent. Just refactor it, right? You have all the tests and change is cheap, right?

Because, you know, taking a working program and extending it to cover
the new cases is *boring*.  Refactoring the old code to make it better
is *boring*.  Writing test cases for the old program so that when you
actually make modifications you know that you didn't break anything is
*boring*.  Better to rewrite everything from scratch with a "Shiny, new
language and process!  Yay!"
I'm not sure what you're trying to say here. XP practitioners would argue strongly for the stuff you've labeled as "boring", and AFAIK neither of these projects involved changing which language was being used.

Really?  C3 was in Smalltalk to start?  I have never heard that before.

And, if the XP bunch would advocate that, *why didn't they do it*!

At no point did they add a set of regression tests to one of the old systems, refactor it into something useful, and then merge one of the other systems in. In 4 years, they would have had at least 1 less payroll system. That is, at least, a qualified success.

Actually, there is data from both the CCC project and the VCAPS project, let alone subsequent studies. Then there's all the stuff that came before that. As Kent Beck is fond of saying, "XP isn't so much a new methodology as a new branding of existing best practices". Let's see what some of these controversial principles are:

<sarcasm>

Sarcasm requires knowing what is obviously correct. You do not evince such accuracy.

1) Unit tests. Yeah, hard to find people who think these are a good idea. This stuff has never been shown to help. That's why nobody does it any more.

Good programmers always did this. However, XP are adherents to "test first". "Test first" does not have the blind adherents that it used to. Testing too early while code is very malleable winds up wasting large chunks of time. Quite a few people have moved to "start writing tests when you start hunting bugs"

2) Acceptance tests for representing customer requirements and validating that you are making those requirements. Can't find a contractor who likes that.

Sure, except that this is the *only* documentation that a contractor gets in XP. Last time I checked, that would make a contractor *very* unhappy.

3) Bringing developers and customers together for release planning. This has disaster written all over it. You get much more realistic release plans if the customer does the planning by themselves.

No argument. However, XP does not have a monopoly of pulling customers and developers together, nor does it have a magic bullet for why it is easier. This problem has the same complexity whether you are doing XP or not.

4) Peer reviews. Everyone knows that if other developers look at your code, they just find more problems and learn nothing about how it works.

Uh, uh. It's called "pair programming". You don't get to choose the good one (peer reviews), XP is "all or nothing", remember.

The 3 controlled studies of pair programming show that pair programming is a net loss in effort and a net wash in defects.

5) Show the customer application prototypes ASAP and collect feedback. That takes all the suspense out of the release. The customer doesn't get to enjoy the surprise. Waterfalls are fun.

<sarcasm>
Sure, because we all know that a prototype completely reflects all the required complexity of a project.
</sarcasm>

Let's pull a great quote on this from Alan Oppenheim:
"I realized many years ago when doing a major project on my home that you can paint 90 percent of a room in 10 percent of the time. The walls are easy. It is the careful attention to the trim and other fine details that makes the difference."

6) Don't implement behavior that you don't need (AKA KISS). Everyone knows you get done sooner and with fewer defects if you put in all kinds of code that doesn't need to be there. Waterfalls are fun.

Why does "Waterfall" add unneeded behavior? The same forces which create "unnecessary" features in "Waterfall" create those same features in XP. The C3 project is a prime example.

7) Collective code ownership. The problem is that with everyone fixing other people's bugs and nobody becoming a bottleneck, you run out of excuses for delays.

And collective code ownership means that everybody can avoid the nasty part of the code that's annoying, complicated, and error prone. Been there, done that, have the scars. Collective code ownership only works when everybody shares responsibility. XP has no magic which makes this happen more easily over any other methodology.

8) Small incremental releases. Again, this takes a lot of the fun surprises out of the release process. Waterfalls are fun.

And how often do you do those? If creating a release takes 2 weeks to integrate and roll out, then weekly iterations means that 33% of your time is development and 66% is rollout. Not particularly productive.

You know, most open source projects seem to think that quarterly releases is as fined grained as they can be, most seem to sit around 6-9 months. XP doesn't seem to have convinced these folks very much.

Yeah, that's all unproven bunk dreamed up by the XP folks. Fortunately nobody else buys in to that bunk.

There are always fools willing to buy into the latest fad. Fortunately, the XP fad has waned and right-thinking folk are demanding some proof before committing their company to such a risky, unproven process.

</sarcasm>

The XP guys specifically talk about what to expect will go wrong if you drop different bits of the process. Hard to blame them when it turns out they are right.

Occam's razor suggests that there is a simpler explanation:
XP fails under all circumstances.

The XP folks are the ones making the extraordinary claims. They are the ones who need to provide the extraordinary proof.

You might want to be careful about that simile. Makes me think about the similarities between your "they didn't overcome all the project's obstacles, so they whole methodology is bunk" and ID's curious "falsification" arguments. ;-)

They had two projects. Both blew up. Either the fault is with XP or it is not. If it is not the fault of XP, then the fault is also not with whatever process was used *before* XP.

You can't claim that XP is a success yet the project failed and then claim that Waterfall/Ad-Hoc/Whatever is a failure because the project failed. And you don't get to change your definition of "success" ex-post facto.

Let's see some projects that XP actually saved.

-a

--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg

Reply via email to