Daily Dish of Dominey Design
{  September 4, 2002  }

Everything is Broken

Reading Jeffrey Zeldman's feature article "99.9% of Websites Are Obsolete" in the latest issue of Digital Web Magazine, I was impressed with one rather obvious, yet important point.

...in the world of programming, if you write your code correctly, it works. If you write it incorrectly, it fails. Languages like C++ and Java don't merely encourage proper coding practices, they demand them.

Likewise, among the first things a graphic designer learns is that the quality of source materials determines the effectiveness of the end product. Start with a high resolution, high quality photograph, and the printed piece or web graphic will look good. Try to design with a low quality snapshot or low-resolution web image, and the end result won't be worth viewing. You can turn a high quality EPS into a suitably optimized web page logo, but you can't convert a low-resolution GIF into a high quality web, print, or TV logo. "Garbage in, garbage out."

But traditional mainstream browsers don't work the same way. Lax to the point of absurdity, they gobble up broken markup and bad JavaScript file links without a hiccup, in most cases displaying the site as if it were authored correctly. This laxity has encouraged front-end designers and developers to develop bad habits of which they are largely unaware. At the same time, it has persuaded middleware and backend developers to view technologies like XHTML, CSS, and JavaScript as contemptibly primitive.

Part of the joy of being a creative-type getting his hands dirty in coding is that unlike the act of creativity, coding either works, or it doesn't. A client may not like a typeface, or a color, or...that indescribable "feeling" you get when viewing a photograph, but with programming code you either follow the law, down the most minute character, or face the consequences (broken applications).

Countless times I have coded an animation, or a function triggered by a button action, only to find the intended result never arrived. So I go back, debug, try again. If it still doesn't work, I repeat the process until I get it right. By being forced into proper form by the strict laws of the language, you build a repertoire of programming skills that go beyond the textbook, while ensuring that your code will work in any browser, player, or operating system.

Now imagine for a moment if Flash, or some other application, never alerted the developer that something was wrong, or not valid within the confines of the particular programming language. There would be no reason to go back and correct the mistakes. The developer would simply move on to the next task and miss an opportunity to learn proper technique and enhance their skills while populating the marketplace with malformed code that may not break now, but will down the road.

Browsers are applications that should function according to the same constraints as any interpreter of a programming language. When rules are loosely enforced, the entire infrastructure falls to the floor. The language then becomes open to interpretation, modification, and proprietary additions. Imagine the hysteria if someone wanted to learn C++, went to a book store, and found competing books with different interpretations of (supposedly) the same language.

If bridges and buildings or even Photoshop were crafted with the buggy junk we see everywhere on the web, we'd be in serious trouble.

archives

You are reading "Everything is Broken" in the individual archives.

Check out other recent posts in the Tech, Web category

Return to the front page.