I’ve been working on a mobile video application for Facebook written in cakePHP.
The client recently asked how Agile relates to progress. Clients like to see a “big bang” at the beginning and I typically do not deliver it.
Why?
The answer has something to do with an Agile process embedded deeply in my brain. Agile encourages careful and deliberate steps. It forces understanding before action. My understanding of the problem gives me confidence that I can take a positive step forward that will not be scrapped later. It is a technique to reduce waste and, ultimately, time and cost.
The cost of a misunderstood requirement is high. The later a missed requirement is discovered, the more costly it is to reconcile. It costs time and money, and usually both. Hidden dependencies and missed requirements are the kinds of errors that double or triple the cost of a project, both in terms of time and dollars.
Agile development forces early requirements analysis. It forces early examination of fringe cases would not otherwise be found until much later in the project. It forces you to address those fringe cases - even if the answer is to intelligently ignore them - before you can move forward. So while Agile feels “slow” in the beginning, it is really a reflection of the inherent complexity in your goal. And you are better off recognizing the complexity early, even though you will not always like it.
Software is not simple because ideas and solutions are not simple. (My friend who runs Simpler Systems would disagree). Ideas and solutions that feel simple are invariably missing detail that Agile forces to the surface. Do you lose time in the long run by using Agile? No, of course not. You are front-loading all those bugs and gotchas that would otherwise surface two weeks before you need to ship. Shipping time is the worst time to be putting things together and learning why they do not fit. Agile fixes that, but the cost is a sense of slogging through mud in the beginning because Agile will not let you write code that will be thrown away due to a lack of understanding of the fundamental business problem.
I have come to enjoy the muddy feeling Agile brings to a project. It helps me gauge the complexity of the problem I am facing. If it feels slow in the beginning, it is a complex problem. In my experience, development speed never improves beyond its initial pace with Agile. Put differently, a complex problem never becomes simpler than how it starts. On occasion, it is possible to drop unnecessary features and Agile encourages that. In those cases, simplification is possible.
Agile does deliver moments where everything “clicks” though. At certain points fringe cases converge again and the problem becomes simpler in your mind and sometimes in the code too. Hidden relationships are revealed and leveraged. That is what you wanted in the first place; that is elegance.
I sell elegance. It feels slow at first, but it is fastest and least expensive method you can buy.
0 responses so far ↓
There are no comments yet...Kick things off by filling out the form below.
Leave a Comment