The recent events around the world showed me one thing – some people can make simple things ridiculously complex and ultimately fail, while fewer other people, a select few, are able to make complex things ridiculously simple and succeed. It is simple, just as any coder knows, the more elegantly simple the code, the less vulnerabilities and the faster the execution and results.
Fellow academic Dr Mehmed Yildiz, who is also a computing geek like me, wrote a beautiful piece on turning “stupid complexity” to “smart simplicity“.
His thoughts echo mine too, that ALL things can be distilled down to simple sophistication, IF one thinks hard on 2 things:
Making people happy and successful
Create something that works
With just these 2 premises in mind, and ALWAYS remembering to “make people happy and successful”, your thinking will always gravitate towards empathy and consideration for others, rather than your own myopic spider web of madness.
What can we coders (I coded since 1970s) teach anyone to solve problems, snuff out crises, and show empathy for people?
1) K.I.S.S. (keep it simple stupid, or keep it short and simple)
Remember the supersonic stealth SR71 Blackbird that stole the thunder from the Soviets? That bleeding-edge jet was the product of Lockheed Skunk Works, where this K.I.S.S. principle was reportedly attributed to lead engineer Kelly Johnson. In all things, from coding, to running a government, K.I.S.S. can seriously improve productivity, service quality, maintenance, and COST.
2) Rule of Least Power
A sledgehammer will see everything as a nail, just as a blunderbuss will never shoot straight and on point. To solve any problem or crisis, use the least resources, from raw materials, people, technologies, and processes, to develop and reach the outcome. Again, the Rule of Least Power is all about simplicity and resource management.
3) No “Big Ball of Mud”
A “Big Ball of Mud“, credited to coder Brian Marick, describes software that is haphazard, huge, sloppy, and opaque. Imagine if you are debugging such a bad code, you could spend months and not get anywhere. Never think that “duct tape” and sloppiness are the way to success – they never are.
4) Fail Fast
Failure IS an option in life, just as it is in business and coding. To fail is to learn, and to NOT repeat the mistakes again. The concept of “Fail Fast” is to allow problems to show up, rather than hiding them, or to allow the tragically flawed problem to roll on and continue. Let things that fail, fail. And then change tracks and pursue another way.
5) No “Parkinson’s Law”
Parkinson’s Law mentioned that “work complicates to fill all available time”, which means that bureaucracy is the worst way to solve problems; where sitting at a table or to spend 15 hours at the office, does not equate to actually working, or solving anything. This principle ties in with K.I.S.S., reminding us to kick bureaucracy to the curb, and move straight on.
6) Perfect is the enemy of good
“Better to be a diamond with flaws than a pebble without” (attributed to Confucius). Likewise, “Perfect is the enemy of good” (attributed to Voltaire as “Dit que le mieux est l’ennemi du bien”). This is similar to the 80:20 principle in coding and elsewhere, where you may only need 20% to achieve 80% of a task, while requiring 80% effort to tackle the last 20%. Coders know that the last mile in an app is often nearly impossible to complete, often reaching feature-completeness and success with some flaws here and there. Nothing in the world is perfect, so stop going ballistic and insane over the impossible.
7) No “Startle Effect”
To us aviators, we always want to avoid the “Startle Effect”, or what coders call “Principle of Least Astonishment (POLA)“. Don’t you hate it when people jump towards you and yell “surprise!” Likewise, in any crisis or problem, how we best resolve them is to create as little surprises to people. The reason why the Japanese cuisine is so loved is due their high quality and also the repeatability meeting expectations time and again.