Here’s another story that I re-posted somewhere else before: The Complicator’s Gloves.
Good software is constantly under attack on several fronts. First, there are The Amateurs who somehow manage to land that hefty contract despite having only finished “Programming for Dummies” the night before. Then there are The Career Amateurs who, having found success after that first contract (read: taking the client’s money and not being sued for developing a useless product), actually manage to make a career out of repeating that experience. And then there are The Complicators, the side that tempts the best of us to join their ranks, even if only for project or two.
There are some so deeply embedded within The Complicators, that they’ve acquired a sort of sixth-sense: the ability to find meta-problems (“a problem with the process of creating a solution for the actual problem”) in virtually any solution. As we’ve all seen, the systems that these developers create often end up as a barely functional application comprised of a Matryoshka-doll-like nesting of problems and solutions. Given the chance to solve problems outside of Information Technology, I’ve often wondered how The Complicators might respond. Fortunately, Mike has given us that opportunity …
As programmers, we usually have multiple ways to solve problems. As computer scientists, we are aware that we must determine which of those solutions are elegant solutions. Unfortunately, due to our flawed educational backgrounds and personal experiences, our definition of “elegant” is usually “overcomplicated solutions” or “our solutions” (or both).
As software engineers, we must unlearn that potentially dangerous way of thinking. Elegance for us should always begin with simplicity.
So the next someone suggests a complicated solution for a simple problem, always keep in mind that that problem might be solved by “gloves”. (Unless, of course, you’re not going to be affected by that complicated solution. :D )