A few days ago David Anderson, author of Agile Management for Software..., asked me to respond to a comment made to this blog entry. He was looking for examples of the TOC thinking processes used within software development. I gave the following example (reworked 7th Feb, 2004):
Several years ago I was Data Architect for a very large data warehouse project. Data Warehouses are very large databases of historic, operational data held in a format that can handle very large queries.
We were considering two conflicting approaches for building a datawarehouse. The first was to use the traditional design approach and fully normalise the tables, eliminating data redundancy and minimising disk-space. The alternative was to design the tables as a Star Schema, which uses much more disk space to store the data but results in far, far faster queries.
The evaporating cloud looked like this:
....D - use properly normalised tables
..B - minimise disk-space used
A - build a successful datawarehouse
..C - fast query performance
....D' Use denormalised (star schema) tables
[Read this: "In order to A we must B and C", "In order to B we must D", "In order to C we must D'" "D and D' are in conflict with each other".]
Initially we thought we could evaporate the problem because B-D (In order to "minimise disk-space used" we must "use properly normalised tables") might not be true: even if the data tables were small, the server would probably require a massive amount of working diskspace to cope with the types of queries being run.
We were discussing this when our manager popped his head in, took one look at the cloud and said "Why are you guys worried about disk-space? It's dirt cheap these days, our disk space will be doubled next month when we upgrade the server, and if we need more I've got plenty of budget". Duh!
In term's of the evaporating cloud, the arrow between A-B (In order to "build a successful datawarehouse" we must "minimise disk space used") was evaporated since diskspace was cheap relative to labour and other hardward costs. That is, we didn't care about B since it wasn't necessary for A.