I’ve always had a reverence for a simple solution. I remember a professor in graduate school gave us a problem to solve and when we arrived at the next class, those of us that managed to solve it had a few pages of calculations before arriving at the final answer! The professor then showed us a little mathematical identity that turned the solution into just a couple of steps. The complex solution became a simple solution if you knew the trick. It was elegant. Ever since that experience, I’ve been somewhat alert to complexity.
Many have had much to say about simplicity and complexity. You may have heard of some of these blokes!
Life is really simple, but we insist on making it complicated.
Confucius
Complexity abounds. You don’t have to look very far to find instances. For example, the United States instituted an income tax in 1913. The written code was 400 pages. By 2013 it had grown to 74,000 pages.
The American healthcare system has been tinkered with continually and involves multiple parties including insurance companies, doctors, hospitals and government. Add to that the large pharmaceutical companies, their companion government agencies such as the FDA and CDC.
Nearly everyone is dissatisfied with the current system. According to a 2018 Gallup survey, 71% of the US public consider the system in a “state of crisis” or “has major problems.”
Unnecessary Complexity
I remember receiving a package in the mail from Discover Card for my merchant account. It was completely about the legal aspects of accepting the Discover card as payment for goods I sold on my website. Such agreements normally would have been hardcopy documents. This is basically a business agreement between two parties – Discover and the merchant. It’s a simple service that enables Discover card to facilitate a transaction by collecting money from a consumer and depositing that money into a bank account of the seller, minus an agreed-upon percentage that represents Discover Card’s cost of doing business and their profit.
A Simple Solution
I visited a gas compression facility in the Mississippi area some years ago. We added a heat exchanger to a couple of GE Frame 3 gas turbine engines converting the system from a Brayton to a recuperated cycle. These engines were used to drive gas compressors on a natural gas pipeline. Such pumping stations are key to delivering natural gas to homes and businesses.
I was struck by a simple solution to shut down the gas turbine engine in case of a fire. It had a cord that was attached to a shutdown arm. The cord kept this arm in the on or up position and if the cord was severed, gravity took over, the shutdown arm would fall and the engine would automatically shut down! The cord was positioned in such a way that a flame would burn through the cord and of course the engine would shut down. It relied on gravity which is something you know will always be there. More sophisticated solutions undoubtedly are used to sense a fire but these would rely on an electrical signal and so there would be some probability, albeit small, of failure.
Wisdom on Simplicity
Simple can be harder than complex: You have to work hard to get your thinking clean to make it simple. But it’s worth it in the end because once you get there, you can move mountains.
Steve Jobs
I always like Einstein’s viewpoint that “everything should be made as simple as possible, but not simpler.”
Three Rules of Work: Out of clutter find simplicity; From discord find harmony; In the middle of difficulty lies opportunity.
This next one is by a giant in the software development industry by the name of Anders Hejlsberg. Anders created Turbo Pascal in the ’80s, Delphi in the ’90s and the C# programming language in the 2000s. He has other achievements but each one has simplicity at the root.
Simplicity has always been something that I value. Whenever I look at what’s done well in the world or in our field it seems like all the really good ideas are simple ideas.
My litmus test quite often is if you can’t explain to me in five minutes what this thing is supposed to do then it’s probably not a good idea. The simple ones are the ones that win.
Anders Hejlsberg
The quote above is from an interview at Microsoft.
I have just three things to teach: simplicity, patience, compassion. These three are your greatest treasures.
Lao Tzu
Simplicity is the ultimate sophistication.
Leonardo da Vinci
If you can’t explain it to a six year old, you don’t understand it yourself.
Albert Einstein
Takeaways
I’ve found a lesson here is take the time, energy and thought to look over something and see if you can simplify it. One of the things I’m alert to is to find the correct sequence of steps necessary to accomplish a given task. Another is to ensure every step is necessary and not arbitrary.
Simplifying must be part of the creation process regardless of what is being created. In the software world, there is a somewhat recent practice of refactoring which makes code easier to understand and read because the goal is to simplify code and reduce complexities. It isn’t always done because it’s done on code that already is functioning and it’s easy to say it’s done even though the next poor soul that picks up that code may take a long time to understand it – or he may never fully understand it! Software developers that are more like craftsman will refactor as it’s a personal integrity point as they take pride in their work.
I offer this up merely as something to consider on your next project. It’s important to get far enough away from the project to sit quietly, perhaps with a cup of coffee, and ask yourself if what you have is free of complexities and if not, is there anything that can be done to simplify. Good luck!