CleanCode logo
sitemap
SEARCH:
NAVIGATION: first page in sectionprevious pageup one levelnext pagefinal page in section

Motivation

How many toasters have you used that fail because you put in an unexpected number of bread slices? A nonsensical question, because you don't ever need to reboot your toaster. At worst, your bread might get stuck, or perhaps burnt. But I doubt if you'll find a button or lever or your toaster which isn't hooked up or which does something unexpected.

How many documents have you read with misspelled words, poor grammar, or just plain bad writing? Technical writers who forget the purpose of their writing--to explain how to operate a product--will often create an incomprehensible jumble of text.

How many software packages have you used which gave you a cryptic or indecipherable message? Software designers frequently design for software designers, rather than for the actual audience of their product.

How many websites have you seen with links that do not work, elements that are misplaced, or pages that are just garbled? Website designers (lots of people think they're website designers because it is so simple to create a web page) often create a... mess.

These are all examples of failure in communication. Communication must be kept in mind first, last, and at every step along the way.

click to view enlarged image

Consider a project life-cycle; an excellent paradigm comes from the printing industry: a printed piece goes through these processing stages: typesetting, proofs, plates, on-press, finishing, completed piece. Making a change at each subsequent stage is significantly more expensive than the prior stage, so there is always a trade-off of cost versus benefit. A spelling error, for example, caught and corrected during typesetting probably has negligible cost, and some benefit, so it would almost always be done. If the same spelling error is caught after color proofs have been made, that incurs some cost, but would probably be worth it (depending on budget). Skip ahead to when the job is on the press being printed. You (the customer) happened to review the proofs once more and found a paragraph with an error. What do you do? If it is a spelling error, perhaps nothing; if it is a pricing error, perhaps you incur the quite significant cost of starting over.

enlargement of text of label

Now what if you have mailed out thousands of your finished pieces (think: mailing cost $$$$), or shipped product with erroneous labeling (think: distribution cost $$$$$$$$) ? Of course, one could not be expected to catch a single-word error immersed in a gargantuan sea of words, particularly if the word is not even substantial, having no particular significance to one's business (see illustration).

Now consider a web page, with these typical processing stages: typing, layout, proofing, establishing links, deploying finished page. Correcting an error in each successive stage incurs greater cost than the last, but the magnitude is dramatically reduced compared to items outside the realm of the internet. Worst case, you edit one or several dozen files, and post them on your website. In an instance, deployment/delivery/shipping is complete. So what harm is there?

The greater the impact of making a change, the greater care one should exercise.

While I adhere to this general principle, a standard of excellence should always be pursued. Do things right the first time. It is ironic how often businesses do not have time to do it right, but they must (due to market demands) have time to do it over.

Never buy version 1.0 of anything.

Software, alas, is notorious for not quite getting it right the first time. Why is that? More on that on the Philosophy page. Or turn to the Gallery of Poor Communication for more examples.

Valid XHTML 1.0!Valid CSS!Get CleanCode at SourceForge.net. Fast, secure and Free Open Source software downloads
Copyright © 2001-2013 Michael Sorens • Contact usPrivacy Policy
Usage governed by Mozilla Public License 1.1 and CleanCode Courtesy License
CleanCode -- The Website for Clean DesignRevised 2013.06.30