I had lunch with a friend the other day, and he asked me about Agile. I didn’t know what to say.
Let’s call my friend a sales manager, working at a company that makes book-checkout software for school libraries. In addition to his main job, he provides the only testing the software gets, and he does it in his “free time”. (So, as he says, the software ends up getting tested by the clients.)
The friend tells me that when they make a change to the software, other things break. And that the programmers always document their changes in the code, so that people know what they were thinking, but they can’t prevent weird things from breaking each time. And when something breaks, the programmer says “Ok! I fixed it!” and they ship, only to discover that the fix broke something else.
Here’s what I told him…
It really looks to me like an Agile approach leads to software that is solid, maintainable, extensible. Test-driven design helps by making it *hard* to introduce bugs. Pair programming also helps with this, but if I try to explain that, this email will be pages and pages. :)
Anyway, it takes time to get old software to have that kind of… uh… agility, strong flexibility, but it can begin to happen right away, because every change you make to the software includes these “unit tests”. And the parts you change are the parts that most need to be cleaned up. They get cleaner, and the software breaks less often. Or in smaller, more manageable ways.
But I wanted to be able to tell him more. What you would say to a friend in this situation? I don’t mean if you were invited to come in an pitch a big Agilifying contract, exactly. But if you were having lunch, and he asked you how Agile is different.
What did I leave out?