There is a class of design problem that can mislead the unwary systems designer, myself included, although I am getting better at identifying the warning signs. These design problems require the designer to base the solution on a conceptual model of a real world system or process. It often appears that a simple conceptual model that approximates to the real world system will suffice. In practices solutions based on these simple, low fidelity, models fail to handle the problem completely and often causes a whole series of new problems. Redesigning the solution to handle these exceptions only produces more problems that require more redesign and so on. If the hapless designer persists s/he will often go through several complete redesigns before getting to a solution that finally solves the problem by modeling the real world system with a high degree of fidelity. This iterative redesign process is typical of this class of design problem. Some might say that only poor designers are ever trapped in this way, others will say these solutions are anti patterns. But I think there is more too it.
The type of design problem under consideration here is particularly intractable because there exists a series of approximate conceptual models of increasing fidelity and complexity. Faced with situations like these many systems designers will claim to be applying Occam's razor when they opt to base their solution on the simplest conceptual model. But, a solution based on an approximation is only as good as the approximation. The only way to improve such a solution, if it is insufficient, is to replace the low fidelity conceptual model with one of higher fidelity. The worst type of problem is one that has many plausible conceptual models each of slightly higher fidelity and complexity than the last. The slavish misapplication of the principle of parsimony will condemn our systems designer to step through each successively higher complexity model until they finally reach one with the required fidelity.
This leads to a tentative conclusion: Occam's Razor is no good for selecting between alternative models if the alternatives are approximations with differing fidelity. A simple low fidelity model cannot be compared with a complex high fidelity one.
An old joke comes to mind. An engineer, a physicist, a mathematician and a biologist were asked to define Pi: The engineer said About 3, the physicist said 3.14159 +- 0.00001, the mathematician said The circumference of a circle divided by its diameter and the biologist said What is Pi. Choosing the least complex, lowest fidelity model is not always the right answer! Too many systems designers think there is virtue in always assuming Pi should be about three.
Glad you made the time to comment Mike. I agree with your suggestion that the point of analysis and design is to pick the correct conceptual model and the evolve it. But this type of problem is almost always peripheral to the main focus of the system. The designer does not want to focus on these issues, in fact they want to expend as little time as possible on them. They want to identify the conceptual model and move on. The fact that these problems appear to have a simple solution is why they are so nasty. Some examples should help illustrate the point. Correct handling of time zones, supporting multiple writing systems and ensuring two remote transactional systems contain the same data are all problems with simple low fidelity conceptual models that are reasonable if you squint your eyes and stand at a distance but they fall apart when you examine them closely.
By simplifying the conceptual model the busy designer can focus on the main area of the solution. This is also one of the key skills of a good designer. But in these cases it is a false economy. This is the miss application of Occams razor.
You say the problem may be identifying the right set of candidates from which to choose the solution. I agree in an ideal world the designer would produce multiple candidate designs. But the world is far from ideal; the average designer never has enough time. Part of the art of being a designer is knowing when you can get away with using a low fidelity solution. The problem we are discussing here is that there are some problems that are particularly deceptive when you take this approach.
Hi John -
After I posted my response, I was wondering if I missed your point a little...maybe because I was under pressure from you to respond to something? =) Also, perhaps I was confusing an interpretation of Occams Razor that I am more familiar with:
(I found this quote by searching the Web using Google.)
Also, I was probably adding in some of the Einstein quote which is one I usually think of when discussing making things simple: "things should be made as simple as possible, no simpler". My argument wasn't necessarily that multiple designs should be created. I think I was arguing that:
From my limited experience, complex systems are difficult to deal with and thus a lot of techniques and rules (such as Occams Razor) are applied to try to simplify them so we can get our minds around them and deal with them. So, is your point really that, in some cases, these techniques break down and that the designer needs to be aware of them? Anyway, I don't know if I'm being very clear in this post, but I probably wasn't very clear in my first one. I think that the last part of your response to me above sums up your point very well (and I definitely agree with it):
Mike
Your point 2 sums up what I was saying well. Also your definition of Occam's razor is better than mine since it stresses that competing theories can only be compared when they make the same predictions. My point is that a busy designer may think solutions of differing complexity make the same predictions when in fact they have different levels of fidelity and cannot be compared. Too many designers fail to realize this and only later discover the devil in the details as the solution falls apart in exceptional situations.
Additionally, I have come across too many designers who think it is always better to simplify. While I agree it is usually better to simplify, I believe this class of problem proves they are wrong to be so absolute.