Sunday, May 25, 2008

Ready-by-Monday Software

The expectation of fast deployment time is changing business software development fundamentally. There simply is no way back anymore. Faster deployment is almost entirely due to developers deploying web applications instead of customers installing software products themselves.

Deploying a web application is faster because:
  • there are much fewer servers than client machines
  • servers are under centralized control
  • deployment is handled by specialists, not by general IT staff, and doesn't even need formal documentation
As a result of faster deployment, delivery schedules of new features and bug fixes are no longer dominated by the client installations. This makes software providers more accountable for making their deadlines. Why? One reason is that in client-server model it was usually the customer's IT staff who managed the deployment. In the SaaS/SOA/service-whatever model vendors deploy applications themselves, even if they are hosted by customers. So, this means that customers can actually check vendors promises on delivery schedules.

My experience is that customers get addicted to this fast delivery almost instantly. People start to demand that every new feature is deployed "if not immediately then no later than next Monday". Of course, business software is all about politics, and some people have more clout than others. But the thing is, getting new software is seen like ordering a pizza nowadays.

However, there are a fundamental trade-offs in software development. You just can't get new software that is of high quality, inexpensive and delivered fast. In many cases you can't get speed+quality for any price.

Practically, I have never seen that customers would have opted for high price + high quality + fast delivery instead of either:
low price + low quality + fast delivery
or
low price + high quality + slow delivery.

I think there are two reasons for this. First, outsourcing has permanently changed software prices to the lower end. There is no market for expensive custom software anymore. Second, outsourced software is never expected to be delivered fast. That's what the local suppliers are for!

Let me emphasize this:
Given a same price, the local suppliers (with higher costs) are expected to deliver software faster than offshore providers (with lower costs).

Cost equals programmer time. Therefore, there is less programmer time per delivery in local development than in outsourced development. I don't really see how quality fits here. Somehow it is assumed that local developers have superior skills and productivity compared to offshore ones, but this is definitely not true.

Instead, I think we are seeing a classic "market for lemons" phenomenon in business software. No self-respecting engineer would think this is good for the industry, but than again, it is the customers' choice.