Extreme Programming inventor talks about agile development

Kent Beck touts shorter development cycles and says agile methods can detect unworkable software projects quicker

1 2 Page 2
Page 2 of 2

XP-style development is courageous; it shares that with cowboy coding. You're going to go and do stuff, there's a bias to action in XP. But cowboy coding is completely opaque, and XP is transparent. Cowboy coding is a solitary activity, and XP is a team activity. Not just programmers working together, but customers, managers, testers. So I think there are contrasts. ... The superficial similarity that a lot of people latch onto is that you get going and you do stuff. So you're cutting code very early. You're cutting code not because you're afraid of not cutting code. You're cutting code because it's what generates real feedback.

You're talking about agile?

About XP, in XP style. But a cowboy coder will do the same thing. You'll get halfway through the problem definition, they'll say -- OK, OK, I got it, I got it. Go off and start typing. Well, it kind of looks like the XP team is doing that, but they're not because the cowboy coder has finished the conversation, and the XP team has just started the conversation.

Has cowboy coding ever worked?

Sure, in the short run, and it has huge risks and huge costs, huge hidden costs. I have stories, but it can work at times. And it's a whole lot better than gridlock. But those aren't the only two options.

What about the situation where you have software now being developed by different teams in different parts of the country at different hours of the day? Is that addressable by agile?

Yes. That's the way that I work most of the time because I live in southern Oregon, and I still program for a living for a big part of my time. So I'm doing geographical development all the time. Time zones are a challenge. The big challenge is maintaining personal relationships when you're not seeing people. That's what's really hard about it. If you do that, if you have good relationships with people, then you can work out the technical [details] -- who does refactoring when and who's going to check in which code and that stuff all works out. But it's the relationships that are hard.

What about Java versus .Net? Does that factor into agile and XP at all, or does it really not matter?

The more the technology platform lets you make changes at a low cost for a longer time, the better suited it is for agile development.

So how does that fit in with say Java versus .Net, or does it not really matter?

I don't think either platform was built with sustainable ease of change as a primary design criteria. That's the sense that I have.

Is that something that's important in agile programming?

Yes, that's what you need in a technology. ... That really helps in a technology platform. My dad was doing most of the technical side of agile development, programming microcontrollers in assembly language. He had automated tests, he did incremental design, he had small frequent releases, and he wrote rock-solid code.

Can you use agile methodologies with Java and .Net, or is there another language that would be preferred?

You certainly can do it with Java and .Net.

IWhat about scripting languages techniques like Asynchronous JavaScript and XML (AJAX), Ruby and PHP (Hypertext Preprocessor)? Do they fit into the agile paradigm at all?

Sure. Ruby, for example, comes from this tradition of human-centric languages. And you could write Ruby in a style that's very maintainable, that's easy to change for a long time. I worry when you get to the database, [I think] that change suddenly becomes harder.

With Ruby?

With relational databases in general. But the agile community is coming up with techniques to deal with that. And the vendors are catching on that that's a differentiator, to have databases that accept incremental change.

What about Web development? Is that particularly tuned for agile development, or is it just another application area?

One of the great things about Web development is that deployment is cheap. And if you're doing deployments all the time, it's great to be able to just push to a handful of servers and you're done. As opposed to the embattled days of having to burn CDs and send them out. That's hugely expensive to do deployments. But if you can just push a button, write disk images to your server farm, and you're finished, then you have daily deployments or multiple times of day, even, deployments are technically feasible, although you have to work pretty hard to get the reliability of the software to where you can do that. But it's feasible.

Was there anything else you wanted to bring up?

Well, I completely dodged your question about the Agile Manifesto, and I didn't mean to, but I'm also not quite sure what to say about it.

I guess there were 17 people who signed onto it?

Right. My name was the first alphabetically, so that's why it's Beck, et al.

What was your involvement in that?

Well, I was in the room, and part of the discussions. ... We were trying to find common ground. ... We share some characteristics, but there's also very significant differences between the original signers. And what I see happening with that word agile is it's just getting washed out. Under the glare of exposure, it's fading. It doesn't mean as much now as it did before.

So what does it mean?

I saw a quote from Microsoft today about how they wanted to become a more agile organization. At that point, what does it mean to be agile? I mean, my definition is that you accept input from reality, and you respond to it.

This story, "Extreme Programming inventor talks about agile development" was originally published by InfoWorld.

Copyright © 2007 IDG Communications, Inc.

1 2 Page 2
Page 2 of 2
Shop Tech Products at Amazon