What's Agile To You?

As a project manager, architect, developer, and coach, I've worked on a lot of agile teams. As part of that experience, it's always fun to ask folks: "What does the word agile mean?"

Many times you'll get a lot of precanned answers. Agile is XP, or agile is Scrum, or agile is Crystal, etc. People have read a book or read an author and just sort of regurgitate those answers back to you.

I think agile is not any of that stuff, however.

To me, agile is iterative and incremental projects, concentrating on business value. That means you do things in cycles, perhaps having something to show once a week or so. It also means you do little chunks of work during each cycle that has some kind of value to the business -- agile is inherently a business-focused system. Finally, and most importantly, agile means that you are constantly inventing, trading-off, or adapting process recipes to work on your team. You're always adapting. Agile means adapting.

I know many folks who either wouldn't agree with that definition or would claim that it is too broad, but I'm happy with it. When I think of agile teams I think of 3-man startups who somehow take a few weeks and turn out something worth millions of dollars. That's incrementally producing business value, friends!

Which brings me to this interesting article I read a few days ago. Talking to coders on successful startups, is TDD an effective agile technique?

I'll leave you to draw your own conclusions, but I couldn't help read the article and think, "sometimes you trade-off code quality, maintainability, and the 'right' way of doing things for business value. And that's okay!"

I think true agile is always a bit of a pain in the ass to people no matter who they are. For the process adherents, whether it's RUP or Scrum, agile says you can cheat. For the cowboys, the guys who want to run without any rules, agile says somethings usually work better than most and you should always be adapting. In short, agile keeps you from making sweeping generalizations: each team, each project, each business is always different from the others.

When I finish hearing the answers to "what's the word agile mean?", I usually provide my answer: 'Agile' with a big 'A' is a marketing term, meant to sell books and certifications. 'agile' with a little 'a' is teams that are constantly adapting to provide the most responsive business value possible.

So what's agile to you?

你可能感兴趣的:(TDD,XP)