Keeping it simple isnt so simple, uh?

This is about dealing with complexity in Design – in software and elsewhere.
I wonder at times why we start off with a complex design and as time goes by we spend more time trying to simplify it. We give it several names, for instance in software we call it ver 2.0 ! In hardware, we may add a suffix like “turbo-charged something” or a “power-something” or simply “something plus”. For instance, they now sell “Tylenol-plus”. Now dont you feel like an idiot having bought plain-old tylenol all these years? Are we duds? Dont you think the guys had brains to add the plus-stuff right from the beginning?

Take the age-old Java versus C++ battles. Paraphrased a quote from a book that I read several years ago when I was still doing JDK 1.2 – “Java makes OOP simple by taking out complexity out of C++ like multiple inheritance, pointers , templates , etc. ”

Somebody down the line realized that templates are not so bad…So they introduced it in Java and gave it a rather synonomous name “Generics”. So who are we to beleive? The original designers and architects of Java who taught us that generics are not a good thing or the geeks that now tell us well, languages evolve to suit the need of developers and you should change your ways as well.

Now somebody pray tell me that it took only the founders at Google to create a search engine with a single text-box. Then started the culture of a “simple and intuitive” interface. Why is it so tough for our brains to create something simple?

I am not talking of iphone that took touchscreen technology to new heights. Maybe sometimes it just takes technology to become cheap and widely available to adapt it to real-world applications. But I hate it when we have the technology at hand, but fail to realize its potential.

Take another instance, when people who wrote simple Java classes were mocked condescendingly by the “geniuses” in the elite group that worked with EJB 1.x…It took a fancy name like POJO for it to dawn on us that simple Java classes with a public no-arg constructor with getters and setters are the next-big thing. Huh?

Tell me something- Spring versus EJB. Its common knowledge that the former is simple and suits almost all requirements that EJB was designed to meet. Spring doesnt use any new language or technology that was not known at the time EJB was written. Why couldnt EJB authors think the way Spring designers did?

Are we conditioned to think complex that kind of hinders us from “keeping it simple, stupid”?

How often have you not heard some sales guy telling you that the product has become a lot “simpler to use”? Are you kidding me? If nothing changed between now and a year before, why did you create something that was “not simple” an year ago?

Keeping it simple isnt so simple, uh?


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: