Sunday, April 24, 2005

Simplicity and Complexity

I think most humans think simple. All our thoughts begin with simple things. When the simplicity cannot meet our needs, we add complexity. So, the next time you see something complex, know that the complex thing was probably not the first thought, but the thought added to the simplicity to meet the extended needs.

I think the same thing holds for software programs. We write them and try to keep them simple. If we feel to meet our requirements using the simplicity, we add complexity. I think if something needs to be documented, it should be the need for the complexity. Given all my thoughts, I wonder if KISS (Keep It Simple Stupid), stresses on finding the best simple solution known to us. I think, it says before you add complexity, evaluate other simple solutions.

2 comments:

Anonymous said...

Have you ever heard of William of Ockham? He is the originator of the scientific principle called Ockham's Razor. It can also be stated as saying, all things being equal; the simplest explanation tends to be the correct one. When you take this further and apply it to religion or the proof (science) of religious certainty, then it errors in it's own statement. Simplicity is based on perception, which is not objective, but rather precisely a perception of reality based on the time and space in which I perceive the event (or understand the event). However, as you say, applying such a principle to software engineering is good practice. Simplicity is strength of application, not concept. The thought can be complex, but the application should be simple (in other words the way in which I bring the concept into existence—writing the code).

Balbir said...

I have heard of ockham's (occam's) razor. I think the KISS principle is derived from it. I think religion is about simplicty, its the simplest explanation for some things we can experience but cannot see, but we know it exists (example hunger). I think even with deep perception one does not loose sight of what is simple, but I agree it could vary a bit.

I agree with most of your thoughts at the end.

Its the best comment I have ever received.

Ranking and Unranking permutations

I've been a big fan of Skiena's Algorithm Design Manual , I recently found my first edition of the book (although I own the third ed...