A wise woman once told me about the KISS principle that she learned while in the Navy. She wanted software that could help her keep track of documents while on the job. She only needed the software to have a certain set of core features. All other “nice to have” features such as reporting and complex sorting were not needed according to her. Why was this?
Upon further probing, she stated that she wanted a system that worked for her immediate need of tracking documents. She did not want a system that was confusing, complex and bloated with features that she would probably not use.
My interpretation of the KISS Principle is that you are at point A. You need to get to point B. Just choose the simplest path to reach point B. Sure this sounds easy, but when you apply the principle to a particular type of customer or coding problem, the solution may become less obvious. Let’s examine the principle more:
- From the customer perspective, it means making the GUI interface as simple and easy to understand as possible so the customer will not be confused. For anyInput, I had a web designer come up with a simplistic and usable design with visual cues. I truly believe that the interface is simple. What do you think? I am also confident that technical users can understand the product. But not the non-technical users who we are targeting.
- From the developer perspective, it means implementing code elegantly and as straightforward as possible. I was the main developer and took significant time to come up with the best, simplistic, most elegant way to solve each programming problem. I am not a the type of programmer who only comes up with one solution and starts implementing it.
Applying the KISS Principle to all aspects of anyInput required a long time. There were many permutations of a solution. And often times the chosen solution may not be the best. Designing software for simplicity is not such an easy thing.