The enemy of clear is clever – somebody
Hard to understand things is what you get when you start out trying to be clever versus trying to solve a problem in the most efficient and simple way you can. The more complex a system is the harder it becomes to maintain. Undocumented dependencies and hidden behaviors can leave your fellow developer with unintentional hair loss.
In this article, we will discuss
- What is KISS
- How to apply KISS
What is KISS
The KISS principle is all about keeping things super simple. The letters ‘KISS’ stands for Keep it Simple, Stupid. The principle states that simplicity should be your primary goal when designing a product, matter of fact this principle transcends industries and can be applied to almost anything really. It’s all about applying just enough engineering to get the job done, nothing more, nothing less. If you can’t explain it, you don’t understand it well enough. If you don’t understand it well enough how are you going to pass the knowledge on to the next person?
The truth is when it comes to software, end-users don’t care about how something works. They don’t care about which technology you used and they most definitely don’t care about how clever you were. They care only about something that is useful to their own lives.
This principle has been a key ingredient in the success of many projects. The common problem today is that most developers tend to over-engineer and come up with complicated solutions that result in huge classes, huge methods, and spaghetti code. All of these issues could be avoided if we break down big problems into smaller ones.
Variants of KISS
The KISS principle also comes in other flavours
- Keep it simple and straightforward
- Keep it short and simple
- Keep it short and sexy??? (ok ok, I just made that up but it could be)
This just gives us additional ways of talking about KISS from our titled meaning. The core meaning still applies to whichever one you decide to run with. That is, we should avoid complicated solutions when it doesn’t need to exist, especially when it exists just for the sake of being complicated. Only when complexity has been introduced to make the user’s life better, only then can it be tolerated.
Start with a KISS
Even though the general theme being used in this article relates to software development. The KISS principle, like many others, doesn’t just apply to the world of software development. Here I can take the chance to say that we can use KISS in many other areas like in our product design, our presentations at the office and even in our sales pitches.
Have you ever cringe at the sight of a PowerPoint presentation with slides containing solely words that filled each deck from top to bottom. Try to find a way to illustrate your ideas with a few simple words and pictures.
When it comes to business pitches or anything of that nature, there will come a time when you can impress your audience with the details but your pitch has to hit the punch. It has to go straight to the points and value. It has to be long enough to give enough details about what you’re trying to sell but short enough to not bore your audience with unnecessary information. It has to be…simple.
How to apply KISS
Let’s look at just a few ways we can keep our software projects simple. If you don’t know what that looks like, well here is the perfect opportunity to learn how.
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
Delete Useless Code
Here’s a secret, less code will automatically make your system simpler. Yup. So that means deleting that code you “think” you might need. Be cruel, be vicious, be quick and rip out every single line you can find that has been deprecated, requirements that are no longer being used. Leave no survivors. Dead code tells no tales.
You’re Not Gonna Need It
Only keep code that solves a current business need. It is nice that you can think ahead and anticipate future requirements. However, those future requirements often don’t ever really happen and if so they happen in a different context as you initially thought and it will still require your solution at the time of creation to be modified regardless thus making your original efforts null and void. Do yourself a favour and don’t comment on that code you think you might need, just remove it. Ok, what If I do end up needing it? Well, that’s what version control is for right? Have you ever heard of notepad, ctrl+c,v and s it, in the worst-case scenario but trust me you aren’t gonna need it.
Applying a humble approach to problems can help, thinking you’re smarter than everyone else often ends with a horrible surprise. There is somebody out there that is probably smarter than you so there is no need to try to look like a genius. Trust me, with enough time, you will eventually get there. Superstar status is in your orbit.
Remember Your Best Practices
Best practices, best practices, best practices, remember your best practices they were invented for a reason. Come on, you don’t believe some guy(s) randomly came up with a set of principles just for the sake of coming up with principles. It means that these “best practices” were introduced by programmers with perhaps decades of experience in software development. Luckily for us, they eventually had several problems due to the mistakes they made and thus leading them to the revelation and documenting these practices. Save yourself the discovery, it’s gonna break eventually so follow them, keep it SOLID, keep it DRY and keep it simple.
Less is more, the easier something is to understand the easier it will be to maintain and modify. The easier it is to explain to others, the easier it will be to sell. The KISS principle is a great principle to follow in general. Compromise where you must but only when you absolutely have to.