Tuesday, October 6, 2009

KISS with Duct Tape

If any of the readers of this have had the fortune (or curse) of working with me on any of my projects, you will already know this. But I am a HUGE proponent of KISS (Keep It Simple Stupid) methodology for designing Software (but can really be extrapolated to most areas of your life).

Early on in my career as a developer, I would strive to create "Art" in my code base. Trying to get the largest functionality, obscurity and "cool factor" from the absolute minimum number of lines. Often, this would require hours of rewriting, tweaking and research to squeeze out a few less characters in a statement. Once I was satisfied with my creation, I would sit back and glow in my own greatness - even if nobody else would ever notice or even care.

But then strange things started happening - any time something needed to be changed or heaven forbid there was an error in my code, nobody else seemed to know how to fix it. Team members would not understand the singular line of code that accomplished all 20 requirements for the function! Nobody else wanted to spend the time to research to figure out the obscure, deprecated function that was used. Slowly, the dim bulb over my head began to illuminate brighter. By creating the coolest thing ever, I had really inadvertently created more work for me. Hmmm... I began to reconsider all my efforts - did I really want to be the one always paged at 9 PM on Friday because the one line of code I produced was wrong and I was the only one who knew how to fix it. I did not.

At that point I began my journey back down the hill - back down to the perceived "common folk", which I now realize is really where I belong to begin with. After many years in consulting, one of the biggest tasks we have in creating solutions for our clients is to not only provide them with a application that works and performs all the necessary tasks, but to also provide them with something that they can understand and build upon themselves. Now, don't get me wrong, KISS does not give us the leeway to not do things correctly - just don't over complicate things needlessly.

I was recently reading a blog about a "Duct Tape Programmer" (read it) which really struck a cord with me. While I don't quite advocate slapping together a solution and calling it a day, there are many truths in this blog that we can all learn from. One of the biggest "features" of our projects is that it must be DELIVERED. Without delivery, it is all for naught.

Now, where did I put that tape?