I was wondering why IT was so hard to do well. Or at least, why so many organisations run into so many problems when dealing with their computing needs. The main thing that seems to paralyze everyone is making a decision. And the reason this is so hard? Like many things, it is because people can't abstract a problem and model it based on the fundamental properties of that problem. Instead, they over-complicate the task by looking only at the individual interconnected parts and then add unrealistic pre-conditions for good measure. This is why the principle of "deliver early and often" works so well. You can start off with a simplified version of the software and through early use and feedback, people get a much better idea of what it is they want, concentrating on the important elements - usually the abstracted core of the system. It also helps if this is also driven by the pragmatism of either small budgets or tight deadlines.
KISS (keep it simple, stupid), it seems, is a hard lesson to learn, one that has to be reinforced on a regular basis. Achieving simplicity is, as I have said, a product of being able to abstract effectively and then being able to implement a solution which is internally and externally consistent.
.