There is a lot of mystique associated with being “agile”. Even for developers who are usually so tech-savvy, they talk about agile in odd terms – like my grandma might ask what the web is used for.
Like:
“I guess I’m a little a bit agile, but I really like to use use cases – does agile have use cases?”
Or,
“I woudn’t want to do scheduled releases like agile because I don’t want to send the customer half-finished features.”
They really just have no idea what agile is…
I get it. I hate buzzwords and bandwagons, too.
The difference is that I’ve been on multiple agile teams that were so incredibly successful that I am sold.
- I never have to feel that sinking feeling in the pit of my stomach just because my customer found a bug.
- I don’t have to fight with my customer over whether something is a bug or a feature request.
- No more working crazy overtime at releases.
- No more holding your breath at the big, scheduled demos that it will actually work.
So what is this magic? In the effort to spread a little knowledge and good cheer, this post is just a small tasty sip of the agile KoolAid:
- Agile is a set of ideas, not a religion
- Agile doesn’t increase project risk, it reduces it
Agile is based on a set of ideas called the Agile Manifesto. For example, value “individuals and interactions over processes and code”. I have no idea why so many agile proponents try to indoctrinate everyone into their little cult, but that is the opposite of what agile is about.
Agile doesn’t say you can’t use any process, agile doesn’t say you can’t use any up-front design, agile doesn’t say you can’t use your previous use cases!
You don’t have to worry if agile is going to destroy some precious aspect of what you do, because by definition if it’s working well for you and the project then it’s agile.
Agile recognizes that feature creep and unexpected bugs are going to happen. Traditional project planning basically crosses your fingers and hopes it won’t happen, or punts it to some later date (I’ll deal with feature creep when it happens, We’ll handle all bug fixes at the end).
Instead, agile puts the reins in the hands of the customer/client/PM/whatever. By allowing them to reorder the backlog however and how often they choose, we ensure that the programmers are always working on the most important thing at any given time.
If you run out of time in an agile project, by definition you have already completed the most important things. If you run out of time on a “traditional” project, you most likely have something completely unusable, like a database and middle layer but no UI.
Listen, agile doesn’t make crappy programmers write good code and it doesn’t turn useless products into good ones. All it does is allow programmers and PMs work together on the same side the table and focus on the things that matter, like getting to done.


