Below is my winning submission “KISS IT” featured in the 97 Things Every Cloud Engineer Should Know . If you like this and other content like it, why not pick up the book. Enjoy!
Most of us have probably heard the famous KISS acronym and benefited from its golden wisdom throughout our lives. KISS i.e. “Keep It Simple Stupid”, is a fantastic guiding principle. Realizing it or not, you apply this concept, too. When you go to the grocery store, do you exclusively buy exotic ingredients? Do you only use complex kitchen appliances at home? Unless you are like my late grandfather whose kitchen looked like the inside of an “As Seen on TV” store, of course, the answer is no. What’s much more likely is your kitchen looks similar to mine and is organized (or disorganized) with simple, multi-tasking tools like knives, cutting boards, pots, and pans to prepare your repertoire of go-to meals (think, Taco Night). Expensive ingredients and complex tools occasionally appear to help cook trickier meals, but what a pain it would be to cook complicated meals for every breakfast, lunch, and dinner. It’s such a natural idea, but we seem to have the opposite urge when it comes to our work in IT. Why do we find it so difficult to KISS IT?
Although the concept of KISS is ancient, the specific phrase has its roots in engineering. The story goes that an aircraft engineer by the name of Kelly Johnson coined the term while working at Lockheed. During this time, Kelly gathered a team of engineers tasked with designing jet aircraft. He proceeded to hand out a small set of basic mechanics tools and challenged them to design the aircraft in such a way that an average mechanic with this same set of tools could perform the repairs. Therefore, the engineers’ designs had to consider both how the aircraft could break and how those breakages could be repaired “simple stupid.”
Cloud native systems are not jet aircraft, but they are complex, interconnected operations that break. It’s not a matter of if they will break, but a matter of when. As we design and architect systems, we become the experts of that system and know the intricacies of the design. But, we forget our creations will continue on after us and need to be maintained by others who can not be expected to have the same familiarity. As Cloud Engineers, we need to take seriously our role in designing and building systems that are going to fail. We need to consider how to prepare for failure using only a simple set of tools and a reasonable understanding of the system. We need to create systems that someone else can reasonably repair when it breaks. Only then, can we ensure Johnson’s “simple stupid” approach lives on in Cloud Engineering culture.
Here are some ideas to apply KISS to your Cloud Engineering practice:
- Avoid premature optimizations
- When you need to make complex optimizations, provide detailed documentation
- Start small and use MVPs to help guide design decisions
- Read the documentation to understand the Cloud APIs you consume. Pay close attention to rate limits and error codes
- Focus on learning best practices and avoid needlessly complex and confusing systems
- Remember that your idea of what’s simple is different from your operators
- Use standardized naming conventions that provide context
- Make time to delete unused cloud resources so they can’t distract from what’s important
- Understand who’s operating your system and their capabilities
- Find your system’s failure scenarios and provide runbooks to resolve them
- When in doubt, take Albert Einstein’s advice: “Make everything as simple as possible, but not simpler.”
Good luck, happy clouding, and don’t forget to KISS IT!