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