Saturday, October 3, 2009

Keep it Simple, Stupid

Yes, I know it's overused, but it really can't be overstated. Many of today's common coding practices really boil down to the KISS principle. But, really what does that mean? I've noticed that the term simple means different things to different people. Here's what Merriam-Webster says: readily understood or performed

That's actually a pretty simple explanation. How does this apply to software development? Here's the bottom line: Design applications that are readily understood

In my years involved in development, a large amount of my time has been spent maintaining applications. Whether by my own machinations or that of others, I frequently see this seemingly easy rule violated, which just makes maintenance a pain in the butt chore.

In writing this blog, my primary goal is to rail against overly complex application design and to promote methodologies that will result in more maintainable code. This will make you, whoever maintains your code, and whoever is paying you much happier people. My main areas of focus will be on usage of the Java language and related frameworks, as well as principles of software construction in general.

In closing this first entry, here's a couple of books I would suggest that really address these topics:
  • Code Complete: A Practical Handbook of Software Construction - Steven McConnell
  • Refactoring: Improving the Design of Existing Code - Martin Fowler

In Code Complete, Steven McConnell repeatedly states that "Software's Primary Technical Imperative is managing complexity". To paraphrase: Keep It Simple, Stupid!

1 comment:

  1. Your blog should definitely add some value. I have some coding experience in Java (4-5 years total), but have more than double that in ColdFusion. It seems when it comes to Java development (especially web development) it seems the path of most resistance is often taken. I understand that JEE Development has intricacies and steps that I would never deal with in CF, but sometimes I think some much time is spent on evaluation of frameworks, design patterns, etc. it seems you don't get to actually building something for months. I know Java is a different animal from say CF or even PHP, and scripting languages in general, but there should be a happy medium between the two. With that said, I'm looking forward to your upcoming blogs.

    ReplyDelete