Agile Project Planning

ExtremePlanner: Agile Project Management for Distributed Software Teams
Click For Your Free Online Trial

Wednesday, March 12, 2008

Agile Project Collaboration and Restaurants

The software development world keeps trying to come up with good metaphors for what a software project is like. "It's like building a bridge", some say, or "Like manufacturing a car", others say.

I think a much better analogy, especially for the dynamic between the customer and the development team, is ordering food at a restaurant.

As a customer, you know what kind of food you like, how hungry you are, and you might have something in mind to impress your date, whether it's your wife, a client, or your boss.

As a chef, you know what makes food taste good, what the best way to combine ingredients is, how quickly your staff can make a certain meal, what foods are freshest, and how much things cost to get.

Naturally, as restaurant customers, we tend to order what's on the menu, which the chef has thoughfully specified in advance. This would be analagous to certain types of systems that a software team has written before, or are available as an off-the-shelf component (e.g. a blog, user forum, poll, etc.).

If some software customers used the same approach in a restaurant as they did in trying to get systems developed, the converstation might go like this:

Customer: I'd like some chicken, but it needs to be the size of a turkey, and I want it to taste like beef. Don't make it too salty, and it should cost less than a can of tuna. Oh, and can that be cooked in 3 minutes?

Chef: Well, the largest chickens known to man are slightly smaller than a turkey, we could get you that, but they don't taste like beef. We could add some beef sauce, but it won't taste very good. Extra-large chickens cost double what normal chickens do, and take at least 20 minutes to bake. I guess we could chop it into tiny pieces and deep fry it in 3 minutes, but it won't look or taste good. Sorry, but it will cost you about 10 dollars for this, a can of tuna is 60 cents.

Customer: You incompetent fool! If you can't handle this, I'll find a chef who can! My 12-year old nephew cooks all the time, and he can make eggs in 3 minutes flat, and they're really cheap, too. A chicken is just a grown-up egg, right? Why can't you do better than my nephew with all of your experience and training? Are you trying to cheat me???


Sound familiar?

Now this might seem silly in a conversation about food, surely a chef knows more about how to best prepare something that we might like. A more typical request in a "made to order" restaurant might be:

Customer: I really like chicken, but not spicy or with heavy sauce. And I'm watching my health, so too much grease or salt is a problem. Can you make me something tasty?

Chef: Of course: I could make a fresh tomato and spinach pesto chicken with boneless, skinless chicken breast with a fabulous balsamic reduction that just hits the spot.


So what's the problem in software? Is it really that hard to express requirements and constraints, and to let the experts suggest options and approaches?

The main issue as I see it is a question of trust. In a restaurant, you'll know in about 20 minutes if the chef understands your needs and can deliver something tasty. If it works out, you'll gain trust, and certainly you'll want to order from him again.

In traditional software, it can take a lot longer than 20 minutes, or even 20 weeks to see the first results. If the outcome isn't pretty close to what you talked about, trust goes down, fear goes up, and you wind up with some serious issues.

Agile software approaches to project planning and collaboration operate more like the restaurant. Order something, try it, maybe ask for less salt or more cream next time, and repeat.

Before long, you'll develop a great rapport between development team and customer, and you can start talking about what's for dessert.

Labels:

Get your copy of the new book! Agile Thinking: Leading Successful Software Project and Teams

Monday, February 25, 2008

Agile Thinking Book now available

Well, my new book is finally ready. It's called Agile Thinking: Leading Successful Software Projects and Teams.

It's a collection of over 40 articles that I've written over the past few years (many on this blog), organized by theme, and reworked and edited for a book format. Hard to believe how much work that turned out to be.

Regular readers of this blog will see a lot of familiar themes and content, and there is an all new introductory chapter that explains Agile methods in down to earth terms - maybe something to get your boss or new team member engaged.

What I really like about how it came out is that you can read it either sequentially, or just pick a random article when you've got only a few minutes to spare. You might not agree with everything in the book, but I think you'll find some useful ideas, some inspiration, and maybe even something that challenges your current perspective.

Have a look at the preview, and get your copy while it's hot (with on-demand printing, it might actually BE a little warm).

Labels:

Get your copy of the new book! Agile Thinking: Leading Successful Software Project and Teams

Friday, December 21, 2007

Agile Thinking

In case you're wondering why it's been so long since my last post, there's actually a good reason.

I've been working on putting together a book that distills the stuff I've been writing about for the last three years into a coherent form. The working title is "Agile Thinking".

My wife is a professional editor, so we've been busy cleaning up, cutting down, and rewriting some of the better posts from here, along with some other articles I've written, and organizing them by theme. The goal is to create a guide for real-world Agile project managers, developers, and customers to better understand, challenge, and improve their process.

Hopefully it will be ready sometime in January.

Get your copy of the new book! Agile Thinking: Leading Successful Software Project and Teams

Friday, September 21, 2007

Agile Open California: Wide Open Spaces

About a year ago I participated in my first Open Space conference in Portland.

The idea of Open Space is that instead of a canned set of speakers and topics, the participants propose their own topics on the first day, and people vote with their feet in terms of which topics sound most compelling.

The Portland conference was the best conference I've ever attended. Imagine, always being engaged in a topic that you're interested in, rather than listening to yet another boring speaker with too many Powerpoint slides.

Open Space is about participation, and that makes it incredibly powerful. The combined intellect, ideas, and passion of a group of people can make for huge opportunities to learn and to share.

So now I'm a volunteer on the organizing committee for Agile Open California, which is coming up on October 22nd and 23rd in San Francisco, CA.

It's coming together quickly, and I'm getting excited about another opportunity to mingle, learn, and share with the Agile software development community.

If you're looking for a stimulating learning opportunity, check out the conference website here

Labels: , ,

Get your copy of the new book! Agile Thinking: Leading Successful Software Project and Teams

Tuesday, July 31, 2007

Is Group Brainstorming Hurting Creativity?

Marc Andressen writes about research that shows that group brainstorming produces fewer and lower quality solutions that "virtual" brainstorming where indviduals generate ideas independently, then put their results together.

One way to look at this is that brainstorming sessions with everyone in the same room trying to "be creative" at the same time might not be the most effective approach.

Applied to software development, the implication is that limiting creativity to "groupthink" can have a negative impact on the outcome. Teams may be more creative through harnessing individual expression.

In my own experience, I find that a healthy dose of conflict (with appropriate respect for others), leads to better solutions than friction-less agreement and watered down consensus.

Put differently, if everyone agrees that your idea is the clear way to go, you might have a problem.

Labels: ,

Get your copy of the new book! Agile Thinking: Leading Successful Software Project and Teams