Friday, March 14, 2008

Agile Software Development vs agile software development

I just read Stevey's Blog Rants: Good Agile, Bad Agile and at first i thought he was being overly dramatic and critical, but the more i read about his understanding of Google-style project management the more i realized that he and i are in agreement about what's good and what's bad about "Extreme Programming".

I've started my own company* and, although we are small, we are a team. I've always called what we do "Agile Software Development". Maybe he's right. Maybe we aren't "Agile", but we ARE "agile" and i want to keep it that way because it's great!

Back in the day, i latched on to "Extreme Programming" because the methodology promised salvation from some very undesirable situations. One part of Steve's rant sounds very familiar:

- hire a bunch of [programmers], then hire more.
- dream up a project.
- set a date for when they want it launched.
- put some [programmers] on it.
- whip them until they're either dead or it's launched. or both.
- throw a cheap-ass pathetic little party, maybe. This step is optional.
- then start over.

I've experienced this. It sucks!

As i read Steve's description of Google i recognized the similarities in the ways we prefer get things done (most likely because we've been inspired and heavily influenced by Google's example).

- there are managers but most of them code at least half-time.
- developers can switch teams and/or projects any time they want.
- they never tell developers what to work on (they let them choose their main project).
- developers are strongly encouraged to spend some of their time working on side projects.
- there aren't very many meetings.
- it's quiet.
- there aren't a lot of gantt charts and date-centric dead-lines.
- crunch periods are the exception, not the norm.
- people get fed (especially during crunches).
- people are encouraged not to overwork.

This isn't exactly what we do, but our way isn't so different:

- our developers are our managers.

I believe that you can't effectively manage a role you couldn't preform yourself.

- our developers are not assigned to one project.

Any of us may help out on any given project. We go where we are needed. It's up to the "manager's" to keep track of what resources they have and what resources they need and ask for help when necessary.

- we choose to work on the projects we work on.

We don't take on projects that don't have the potential to inspire us to work on the deeper problems that really interest us. We take on every task with one eye towards research and one eye towards results. It's this cross-eyed balancing act that keeps us interested in the work we are doing.

- we try to keep our deadlines as soft as possible

We still have deadlines because most clients don't want to hear "It'll be done when it's done!" but the truth is that even tho most clients have preconceived deadlines, they usually recognize when they need to let those deadlines slide.

Old habits die hard and i don't expect every one of my clients to see deadlines the same way i do: as a misnomer. There is nothing "dead" about our deadlines. It's just a target or a milestone (which isn't even necessarily a date). Most projects live for a long long time after the first "launch" or "release" and that's not a bad thing.

- we recognize that crunches and meetings should be kept to a minimum

We still meet (and crunch) more then we'd like to, but we splurge on good food when we do. I like to call it our Sushi budget ;)

So I'd say Google-style project management works well for us. Whether you call it "Agile", or "Extreme" doesn't really matter that much to me. The the important thing is that Google has proved that a methodology like this can scale. "Scaling" means it works on the small scale as well as the large scale.

I can't help wondering if it "Slides" as well as it "Scales". Can these same practices work for other industries? Legal? Accounting? Finance? Journalism? Creative writing? Music? any industry in which "thought workers" produces "artifacts"?

I intend to find out, and i'd welcome all the help i can get!

* It's not just MY company. There are several of us and really it's OUR company.