Thursday 5 March 2009

Environment-adapted software development

Normally, when you create software, there are 4 parameters that you can specify:

* Functionality
* Price
* Deadline
* Quality

In a competitive market, the customer can only specify three of these parameters. If the functionality is defined, the deadline is defined, the quality is defined, then the price can go up sharply, and I guess everybody knows examples of this.

As Microsoft themselves described once, the trick is to be flexible, the official advice was to cut functionality if the deadline approaches more quickly than you expected. However, you get much better planning if you start by realizing that you need flexibility, before signing a contract. Maybe you even have a fixed budget and just want to maximize the value of the product?

One of the custom projects, that we did recently for a customer, was to create a piece of software where the specs were a bit unclear, but the purpose was clear. Quality was well defined, deadline was defined, too, budget was defined, but functionality was not. The result was an innovative process: We created new ideas, and the end result was better than expected.


Anonymous said...

Interesting. Could you elaborate on the last sentence. What prevented you from loosing focus and why do you think you were better than with well defined functionality?

Lars D said...

The iterative process in Agile Programming ensures continuous feedback on the direction, making sure that we're continously generating value for the customer.

It was better than expected because several IT people in the customer's industry say that our solution cannot be done. When they see our solution, they're baffled :-)