XP... You Know, For Kids!

My good friend Alan Francis recently observed the following about eXtreme Programming:

"It feels like a bunch of people are looking at XP and the last five years and somehow thinking themselves naive. "Oh look, we were the upstart teenager for a while but now we have to get serious...'Agile' is big business...XP is just adolescent idealism".

Ron Jeffries (one of my favorite people to argue/agree with in the whole world) thoughtfully asked some of us for our thoughts, and Ken Auer of RoleModelSoft -- a long time XP'r and Software Craftsmen; someone whom I admire and respect (and talk to entirely too infrequently) -- provided a response. I asked Ken if I could publish his comments on my site, and he graciously consented, so here they are:

This is the same stuff I heard from people who never got Smalltalk or the "oriented" part of "object-oriented" and figured grown-ups used C++. [of course the OO folks ended up having to use Java like the mature people said we had to if we didn't want to use C++] And the same stuff I heard from people who never got Object-oriented Databases and figured grown-ups used Relational Databases or Object Databases that assumed grown-ups were using C++... Note the missing "-oriented") [of course the OO folks came up with OR mapping layers so it could become bearable to use the RDBs the mature people said we had to use] And the same stuff I heard from people who never got CRC and figured grown-ups had to have a CASE tool. [of course the OO folks stopped using CRC cards and drew something that resembled UML on whiteboards so they could play in the mature people's sandbox] And the same stuff I heard from people who never got what a real team development environment should be like and used vi, emacs, or any number of visual products that couldn't do much after you wired things together. [of course the OO folks started building IDEs that would play nice with all the junk the mature people made us use] And the same stuff I heard from people who never produced anything with a small high-performance team and said my techniques would never scale the way the ones that have never worked never did. [of course the OO folks produced XP so they could find a way to work with teams bigger than 3 or 4 because the mature people have produced a complex world that is difficult to imagine that any 3-4 people can navigate through] I was certainly na�ve when I started XP, but not nearly as na�ve as those who were too mature to use it in the first place. About a year ago, Uncle Bob pointed out Aristotle's error... That he stopped trying things out and observing what works but kept on thinking. I've been called an idealist since I first started programming with Smalltalk and producing stuff that I had no idea how I could do with any other approach. It slowly matured so I could do even more with a team of people without shooting each other in the foot. Now, the tools for Java and the discipline of XP have made it bearable enough to use a sub-par language and be almost as productive... Even when I have to deliver applications in an environment designed for sharing static text and bitmaps. Some adolescents will become agilescents (adolescents that go meta instead of grow up); some will keep their idealism until they bite off more than they can chew and get depressed when they fail; others will have some success amidst some disappointments... The wise ones won't let the success or the disappointments get to their heads and become the former. I've done or seen a little of all of the above. Though it's good to stretch oneself in some way, I've always come back to the idea that focusing on being a Software Craftsman, though not without it's bad days, is more satisfying than being a meta-consultant. It may not always be as lucrative, but I've always eaten well enough (or too well), and I find the enjoyment factor is always higher when I'm not in it for the money. YMMV