Martin Fowler speaking at Rails Conf 2006, describes the Web 2.0 software development process as a process that works in the reverse of traditional software development processes.
There is this culture of just give the product to the customer. Then see how they use it. Ship the product, then gather the requirements. The opposite of the traditional process. Fire, aim, fire, aim. As long as the bullets are cheap.
He continues that short cycle times and cheap bullets are hindered by traditional software “Plumbing.” The Web 2.0 development model gets the plumbing out of the picture so the conversation between the customer and the developer is not muddied. This decreases cycle time, effectively increasing the chance the end product will actually be what the customer needs.
Thinking about all the “enterprise” Java web applications I have written in the past, I get the sense that he is dead on. Generally 80% of my time is spent building the plumbing; (build scripts, sql scripts, beans, actions, jsps, and the bazillion of object transformers across all layers) and less than 20% is actually business logic; (flow control, business rules, validators, dynamic UI, etc). I find I am most productive after a project has been around for about eight months and all the patterns and plumbing are in place. At that point adding new features is usually a job of copying a bit of plumbing and adding the 20% new logic. The problem is that eight months in world of software is an eternity. By wasting your time on plumbing, your application is becoming out-dated and the technology stale. I guess that is some of the allure of “Spring” and other packages that claim to cut down the plumbing. I believe you will only really begin to see time savings by moving to a model of “convention over configuration” and getting rid of the configuration bloat, something Rails gives you out of the box.