Saturday 25 October 2008

Is software creating financial bubbles?

Alan Greenspan has long praised computer technology as a tool that can be used to limit risks in financial markets, but recently he acknowledged that the data fed into financial systems was often a case of garbage in, garbage out, indicating that this has led to huge trouble. Have bad IT systems been deployed elsewhere on this planet? Yes. Will the world continue to do so? Yes. Why?

If you look at a number of ideas for software systems, then some of these will definitely not make sense, some of them will make a lot of sense, and then there is a huge group in between. In this middle group, it is difficult to evaluate them, sometimes even after deploying the software. A famous person once said, it is often easy to measure things, but difficult to understand what is being measured, and this applies very well to software.

The dot com boom was based on the assumption, that the productivity gains in Software are so huge, that the value of many things would go up, a lot. Expectations were too high. Why? Because software doesn't deliver that kind of results, that fast. Resources for Software projects are allocated for the wrong projects, and many projects are doing something wrong.

Why cannot we just do it the right way? There are many reasons, but the single most important reason is, that there is no single right way that fits all purposes, and it is therefore impossible to make one recommendation for all. The best "single right way" that I have seen so far is real "Agile", meaning that you need to adapt all the time. In other words, a very difficult concept to teach. And now we're at the core of why not all Software projects are a huge success:

It's difficult.

Humankind is unable to do everything right. We will never get rid of that middle group of software systems, where we don't really know if they were a success or not.

Software is not much different than other technologies, like chemistry or electronics: Some people are making huge progress, others not, and when the good ideas get deployed, world productivity improves. Some software is great, but software as such is not a silver bullet by itself.

I think we should start to try to identify the biggest successes, in order to learn from these. Maybe we should have a Nobel prize for Software?


Anonymous said...

Hi Lars,

I think this is a great article. Thanks!

I would like to add my 2 cents.

When you mention that we should learn from the biggest successes I think we miss why we fail. We try hard to emulate other people's successes without thinking what fits and what does not fit our goals.

Take a look at the aviation industry. They learn from every mistake or accident they experience by investigating what went wrong. As a result aviation is considered the safest form of transportation.

As contradictory as it may sound, we should learn from their (aviation) success and apply it to software projects. That means: look at both previous successes and failures in order to learn how to conceive, conduct and deliver a reliable software system. Until this happens we are all doomed to repeat the same mistakes over and over again.


Lars D said...

Programming differs from the aviation industry, because the aviation industry maintains a lot of similar planes, whereas the variety in programming is much larger. You cannot just say "we tried that in project A, and it failed, so don't do that in project B". Success depends on the people, the organization, the tools, etc.

However, if you can identify a project that is definitely a huge success, saving much more money than it has cost, it is worth studying.

I think notepad would come into this category, but I'm not sure about Microsoft Word.

Anonymous said...

Software is the same as a paper system, except its faster and lends itself to handling more complexity.

This complexity hiding promotes black box thinking and that only works as long as the real-world assumptions upon which the model is based do not change.

I heard the story of a private bank that moved from Excel sheets to a full relational database. The financial genius that put the calculations together did not understand the rounding rules in Excel. These errors had to be replicated in the relational database tools in such a way that, if a specific client notices the error, only that client's portfolio would be corrected. The reason was that if all incorrectly paid interest were compounded over all years and all clients, the bank would go bust.