Skip to main content

Keep It Simple, Stupid!

KISS stands for the guiding principle "keep it simple and stupid". It is related to Occam's razor, which states: entia non sunt multiplicanda praeter necessitatem (entities must not be multiplied beyond necessity).

This should probably be the main ground rule in any design, but it's often overlooked, if not plain unknown by many self-appointed systems architects.

The KISS principle states that every system should be as simple as possible (but not simpler). It doesn't talk about the easiness of a system, but the complexity. Some people tend to mix these two concepts up.

There is nothing to be proud of when designing complex systems per se. It is always way harder to design simple systems. They are also superior to more complex systems, provided that they support the same functionality.

This philosophy is also related with some other aphorism, such as:
  • Perfect is the enemy of good. This means that, most of the time, trying to design the best (the more complete) system does not pay off, because it is unrealistic, and forces you to trade simplicity for the sake of perfection. This, on the other side, is also related with another principle: YAGNI (you ain't gonna need it).
  • Premature optimization is the root of all evil. This shows that the right answer to the question: "when should I optimize my system?" is, 99% of the time: "not yet".

Comments

Popular posts from this blog

KRunner and Skype with a Plasma Python runner

After the odyssey of developing a KDE Plasma runner in Python I have finally develop a simple one that interacts with Skype. You can read the full story (part 1 , 2 , 3 and 4 ) or just the (useful part)  modifications to my KDE  and the final example . You can download this version from here or download the latest (and beta) version from the bazaar repository... To uninstall it just... I hope to get a fully stable version very soon and then, I will publish a downloadable file in project page and a deb package in my PPA .

KRunner in Python (III)

It works!! Thank to a comment in the bug I submitted , I've been taking a look and I've found that in trunk version, this problem has been fixed. In concrete, the support for runners and wallpapers has been added to the ones for applets and data engines. To add it to your kde installation, just use cmake to install it automatically (after you fix the missing dependencies) or do it by hand: svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdebase/workspace/plasma/generic/scriptengines/python python-scriptengine cd python-scriptengine sudo cp plasma-scriptengine-runner-python.desktop /usr/share/kde4/services/ sudo cp pyrunner.py /usr/share/kde4/apps/plasma_scriptengine_python/ sudo cp plasmascript.py /usr/lib/pymodules/python2.6/PyKDE4/plasmascript.py sudo cp plasmascript.py /usr/share/pyshared/PyKDE4/plasmascript.py # And if you want to add the support for wallpapers sudo cp plasma-scriptengine-wallpaper-python.desktop /usr/share/kde4/services/ sudo cp pywallpaper.py /u...