Andrew Lentvorski wrote:
Christopher Smith wrote:
First, the leaders are all a bunch of *FAILURES*.
Sorry, that's just wrong. The leaders of XP (Kent Beck, Ward
Cunningham, Ron Jeffries and perhaps you want to throw in Martin
Fowler) were all very successful even prior to the genesis of XP.
Okay, back that statement up with some facts, please. IIRC, Beck was
the only one who accomplished anything useful before XP.
/me falls out of chair.
I'm not sure if you are deliberately being obtuse or you just don't
know. Let's try to throw this one out the door as quickly as possible:
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?
All of these guys were big heavies in the software development community
in general, and the OOP and Design Patterns communities in particular
(Ward actually chaired the first PLoP conference). Ron and Martin are
the ones I remember as having the particularly long and impressive
pedigree of projects to draw upon for their OOPSLA and PLoP
presentations. The best of Martin's pre-XP work is catalogued in
Analysis Patterns (worth reading even if you think patterns are complete
bunk). These guys were all the big guns you brought in if your project
was seriously borked.
The CCC project that spawned all these Smalltalk weenies who
advocate XP got shitcanned. Somehow people don't seem to notice
this. I don't want advice from someone who failed at what they are
giving advice on, thanks.
A project getting canceled doesn't necessarily mean those involved in
it or their methodologies were failures.
Yes, actually, it does. Failed projects are the result of bad
decisions. Given that they led the project, they failed.
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. That
said, they did identify some problems/mistakes they had in the process,
and refined XP based on that experience. That's generally how
methodologies emerge and evolve in the first place.
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? I could use
that about now. I'm sorry, but a lot of the time the business side of
things trumps whatever is going on with the technical side.
I'm not suggesting that they should be branded pariahs and never heard
from again. However, the project they led with their own processes
failed. A failed project does not confer authority (actually, a
successful one only confers very *limited* authority, but that's a
debate for another day).
Okay, so a failed project doesn't confer authority, and a successful one
confers very limited authority. This kind of brings us back to the point
that whether the project was a success or not doesn't really convey much
one way or the other?
In addition, according to "XP Considered Harmful" not only was the
first XP project canceled but also the second one was also canceled:
http://www.avoca-vsm.com/Dateien-Download/ExtremeProgramming.pdf
Check out the details though. The VCAPS system initially wasn't an XP
project either. In fact, it had languished for 3 years of development
that employed a variant of the waterfall process, with little to show
for it (supposedly they didn't have a single regression test for the
code anywhere). It was plagued with problems and bugs, etc. Everyone was
pissed. In 6 months they managed to dramatically cut the bug count down
and in a year the system was running very smoothly and customers were
very happy. The project wasn't canceled, but placed in maintainence
mode, because the systems that fed in to it had been deemed obsolete and
so, as a by product, was VCAPS (I'm sure you'll find some way to say
that this was all because of shortcomings in XP without actually
describing a causal link, but by most any reasonable person's
definition, this is exactly how projects die for reasons that have
nothing to do about how well the project was executed). Here's the real
wrinkle though: in the end VCAPS was kept in production for another
decade, as the replacement system had difficulty matching its
capabilities and reliability.
Projects get canceled for a lot of reasons, sometimes due to failure
by the development team, but sometimes independent of the success or
failure of the team. In the CCC project's case, the purchase of
Chrystler by Daimler-Benz played a significant role in the project's
demise, not to mention the fact that the project was a fixed-price
contract job that was already behind schedule and over budget (think
of the success rate of projects once they are in that state) before
Beck showed up and started introducing XP practices.
http://en.wikipedia.org/wiki/Chrysler_Comprehensive_Compensation_System
The XP bunch had *4 years* to get a *payroll* program working before the
Daimler-Chrysler thing. This is something that companies had been doing
for years in COBOL. This isn't rocket science. It is straightforward,
linear decision code.
It was a payroll program. The inputs were specified. The outputs were
specified. They had previously working programs to compare
against--*and they still couldn't deliver*.
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). They
accomplished this despite reducing staffing for the project
significantly while observing significant increases in productivity. The
original project timeline called for *4 years*, which indicates they
were either completely insane or perhaps the project was more complex
than your simplified description. Somewhere in the second year of Beck's
work, they ran in to a problem, as the on site customer was replaced and
the new one who for whatever reason wanted to focus on adding new
features to the system rather than getting everyone on to the new
system. This turned out to be a huge problem because the IT folks who
were actually funding the project had the exact opposite set of
priorities. In XP circles this is referred to as the "GoldOwner" and the
"GoldDonor" not being on the same page. XP practitioners are not alone
in the belief that as long as this conflict exists the project is
doomed. Beck does take the blame for not recognizing the problem as
quickly as he should have, and consequently folks are warned to be
vigilant for this particular problem.
I've worked on several "get it off the mainframe" projects, and they are
anything but as simple as you describe. First of all, there usually is a
whole host of new features that are wanted (typically built up over time
as the mainframe system is highly inflexible, and part of the sell job
of "getting off the mainframe" is increased flexibility). Then there's
the performance constraints. Part of the sell job of getting off the
mainframe is reduced hardware costs, which means you often lack much of
the raw performance of the old system (though you do tend to end up with
a raw CPU performance advantage). If you're unlikely (as I've been), the
mainframe code has some idiosyncratic arithmetic brought about by odd
word sizes and funny little tricks with the FPUs... and they want you to
emulate all the errors that work in their favor, but fix all the ones
that don't. Then there's the real kicker: you often find out that you
aren't just replacing one system, but rather several distinct systems,
each with their own conflicting business logic, and the client
inevitably wants you to unify all these distinct systems... with no idea
how to resolve the logic conflicts.
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.
XP is based on well established principles in the software business.
Not, it's not. There is *zero* data to support most of the assertions
that the XP bunch make.
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>
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.
2) Acceptance tests for representing customer requirements and
validating that you are making those requirements. Can't find a
contractor who likes that.
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.
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.
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.
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.
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.
8) Small incremental releases. Again, this takes a lot of the fun
surprises out of the release process. Waterfalls are fun.
Yeah, that's all unproven bunk dreamed up by the XP folks. Fortunately
nobody else buys in to that bunk.
</sarcasm>
And, when you try to inject data, you are met
with "Well, you aren't *really* doing XP unless you are doing everything
together."
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.
Arguing with XP advocates is like arguing with intelligent design
advocates. They don't get that there is this little thing called
"evidence" that some of us demand.
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. ;-)
--Chris
--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg