You are reading a MIX Online Opinion. In which we speak our minds. Hans Hugli Meet Hans Arrow

Opinions

5Comment Retweet

K.I.S.S. that Frog

Feb 13, 2009 In Web Culture By Hans Hugli

Having cobbled together demos for visionaries for most of my development career, the K.I.S.S principle is something that I’d always automatically employed for lack of time. KISS is a most commonly known acronym for "Keep It Simple, Stupid." Its premise is to keep things as simple as possible, and avoiding unnecessary complexity, but not at the expense of removing needed functionality. The proverbial ugly frog here is complexity and chaos. This principal can be used as a guideline in any walk of life, but here I speak to web development.

Although, here’s the quandary with KISS: acknowledging that potentially "dumbing" down something can result in more effective code usage. I’d like to think that I’m intelligent, we all do, and I’d like to think that I can foresee potential needs that my code can proffer, but trying to guess what someone might need, generally leads to code bloat and complexity. It really forces one to take a look at the entire system to see how it will affect others. Assets need to be examined for complexity and unnecessary functionality, and reduced to simplest terms. This I find,requires a high level of integrity and humility; somewhat foreign words in the world of "smart" computing.

There is continued empirical evidence on the Web that suggests keeping things simple has benefits. Any time a system has interdependencies,adding complexity only will lead to exponential complexity. In Information Theory Entropy is the measure of disorder (or lack of knowledge) in a defined system. As entropy increases it becomes more difficult to comprehend the system. The point here is that even with simple beginnings, things quickly become complex anyway, so why introduce unnecessary complexity first, and intentionally. I think that one of the wonderful things about the web is that it has, through natural selection, chosen simplicity. HTML has been around for 19 years and though it continues to evolve and be extended, there is no sign that it is going away. Why is that? Because of HTML’s very shallow learning curve and people’s ability to view source, it has become the predominant way to publish information on the web for the masses. One cannot dismiss shallow learning curves as just being for "non-developers", and their fundamental importance on the web.

The next step up from HTML is server side logic, and here PHP scripting language has taken a strong foothold. It’s another example of a technology that has brought server side computing to the masses, again because of its low bar of entry and shallow yet scalable learning curve. PHP has been extended with additional functionality over the years by, for example, adding support for object-oriented programming. But the key point is that there is no requirement for developers to use object-oriented concepts in PHP. Some significant websites are built on the foundations of PHP, such as Facebook, Wikipedia (MediaWiki), Yahoo!, MyYearbook, Digg, WordPress and Tagged. In my mind PHP is a great testimony to simplicity.

Another canonical example of elegant simplicity is REST which has become very popular due to its simplicity and flexibility. SOAP is a competing technology to REST and contains a rich feature set, but SOAP hasn’t gained as much traction, since it has introduced unnecessary complexity in most use cases. There is simply too much overhead for most web applications.

Intentionally designing and developing something for simplicity, ironically requires a bit of deep thought. Creating simplicity is not simple. The tricky part is to prevent steep learning curves. In a technology with steep learning curves, the reward is only great for the handful of people that know that technology well. Questions one might ask when designing/developing for simplicity:

  • Simplicity – Can someone that has never touched the technology before, build something in a short period of time?
  • Don’t attempt to solve the world’s problems – What percentage of the functionality will be used? Don’t add functionality just because you think it would be cool. Get feedback from the community on what they would need. Avoid trying to fill the need of just a few.
  • At the same time don’t paint yourself into a corner – Can it be extensible? Don’t try to extend it unless there is a real use case. Interact with the community to find out real needs.
  • Consider that we Web developers tend gravitate toward the "path of least resistance." Is it easy to use and extend?

I feel we sometimes tend to make things a bit overly complex in the name of vanity, to make ourselves feel smarter. In my tenure as a developer at Microsoft, I’ve had to contend with many a "smart" programming model, and it occasionally was an unpleasant experience. I think that we all can learn something from KISS, to simplify our lives. We need to resist the constant shift toward entropy by resisting the urge to add complexity.

A strong believer in simplicity is 37signals. They have published an enlightening book entitled "Getting Real" which I found to be an inspiring read.

Follow the Conversation

5 comments so far. You should leave one, too.

ben said on Feb 16, 2009

jquery is simple too!

Karsten Januszewski said on Feb 16, 2009

jQuery rocks!

L Heyns said on Feb 16, 2009

I''ve been following Mix''s Oxite since the launch and have been doing my own part to KISS it. Two areas where it seems unnecessarily complicated: (1) cumbersome table names and (2) separate tables for anonymous users. Have either of these been discussed with an eye to Keep it Simple? Why manage two sets of queries for post contributors when one User table would do the job simply? Toss some null values in the User table so the anonymous user can opt to relate a full account later - you''ll eliminate dozens of future parallel "Anonymous" tables and reduce query complexity. The current approach of managing two sets of users seems like Oxite is destined to be a MVC sample only, and not the core of a killer app.

L Heyns said on Feb 17, 2009
Joshua Allen said on Feb 23, 2009

The database table names for Oxite were chosen, much like wordpress table names, to allow shared install with other applications. This is an important issue for people on shared hosting, and scoping table names is a well-established industry practice. However, it is easy to remove table name scoping if you wish. You can go visit the CodePlex project site for help renaming the tables on your own instances.

We'll use your email to grab your gravatar. We won't store your email or sell it to trolls.