The Albert Einstein Guide to Systems Development
There’s a small software company whose slogan is “We provide complex solutions to your business problems.” Really? Why would anybody want that?
I love a good puzzle as much as the next guy, but I neither understand nor enjoy unnecessary complexity when something important is at stake. Your business problem is not a game. It’s too important to put in the hands of somebody who wants to sell you complexity.
You don’t want complex solutions. You want elegant solutions – not tiara and tuxedo elegance, but mathematical elegance. To paraphrase Albert Einstein, solutions should be as simple as possible, and only as complex as necessary. Such solutions are elegant. They are aesthetically pleasing to proficient problem solvers.
It is only occasionally true that we must meet complexity with complexity. More often, the perceived complexity of the problem is less than its actual complexity. As W.S. Gilbert might say, things are seldom what they seem. A good business systems analyst knows this. Their problem-solving skills include the ability to see through perceived complexity. They know how to filter out noise and distractions. They know how to unravel tangled and twisted ideas and reassemble them into straightforward elements with understandable relationships. When this process is done well, the complexity of the problem recedes dramatically.
Too often, systems designers and developers skip this step. They rush into solution building. They create needlessly complex solutions because they did not take the time to apply their considerable intellect to a clear understanding of the problem. Einstein also said, “If I had an hour to solve a problem, I’d spend 55 minutes thinking about the problem and five minutes thinking about solutions.” Such an approach is essential to designing a solution which is only as complex as necessary and simpler than originally imagined.
Through decomposition and simplification, the problem is now restated as one that can be solved by an assembly of interrelated and provably correct constructs. This is solution elegance in the mathematical sense. There is no mystery. There may be a large set of ideas. There may be sophisticated algorithms. But there is no mystery. There is no needless complexity.
In software development, complexity means time. Time means money and it can mean missed opportunities. If somebody tells you they can provide a simple solution to your business problems, walk away. If somebody tells you they provide complex solutions to your business problems, walk away. If they can talk about providing solutions that are as simple as possible and only as complex as necessary, keep listening.