Styles

Sunday, November 27, 2011

The difference between good code and good software

I’ve heard a lot of people speak and read a lot of blogs about how to write code.  Surprisingly, very few of these involved discussions on how to create better software.  And no, writing good code (or even great code) does not necessarily result in good software.  To see why, here are some characteristics of good code:
  • Easy to read and understand
  • Easy to maintain
  • Appropriately unit tested
  • Performs reasonably quickly – no tangled logic that slows the application down
  • Errors are few, but easily fixed when found
To contrast, here are some characteristics of good software:
  • Intuitive, easy to use with little to no training
  • Meets all of the needs of the user (within reason), no work-arounds needed
  • Performs reasonably quickly
  • Errors are few, but easily understood when found
If I as a developer want to learn how to write code in a better way, I could find books, user groups, or blogs pretty easily in order to do that.  But better code doesn’t result in a better user interface, nor does it directly result in a better user experience.  You might be thinking that developers write the code and designers design the interface, solving the problem of developers not knowing how to design.  As a consultant, I’ve worked on my share of applications to know that designers don’t get involved nearly as often as they should be.  When they are involved, they too often do not know the actual needs of the end user, and instead focus on making the system look good and work well for his/her co-workers.

In summary, a primary criterion for determining the quality of code is whether the developer can understand it.  This criterion is easy to understand, since most developers are trained to look for it.  The primary criterion for determining the quality of the software is whether the end user can understand it.  This is much harder to understand, because all too often software is written with business stakeholder and developer/designer input without the feedback of the end user.  Yet all too often developers assume that if you write good code, good software will follow.  It's about time that we start recognizing the difference.  If we as developers start putting as much effort into creating better software as we do in creating better code, life for everyone involved will become significantly better.

No comments:

Post a Comment