Graceful Degradation and Progressive Enhancement. Which do you practice?

Written May 30, 2010. 5 comments.

outdated

If you’ve ever been confused by the differences between these to practices, you’re not alone. Ask your designer buddy sitting in the cubicle next to you which one of these web development methodologies he or she practices the most, chances are they’re not sure or they might even think they’re doing neither.

So what is the difference between Graceful Degradation and Progressive Enhancement? When described out aloud they sound pretty much the same, but they have a slightly different focus which will affect your work-flow. Ultimately both have the same admiral goal in mind – to deliver content to the widest range of browsers and devices possible. So if they both have the same goal then why does it matter which one you use?

Because only one is able to actually deliver on that promise properly. Read on.

Graceful Degradation

Chances are this is the one you’re most familiar with and probably practice the most. If you build your sites with bleeding edge technology designed to work on modern browsers, and only devote a small portion of the development cycle towards the end to make it work on older browsers (IE6 for example) in a less polished but still just ‘passable’ state, then you subscribe to the tried and tested school of Graceful Degradation.

There’s no shame in that, as it’s a residual practice carried over from and made popular during the .com boom era, but naturally it’s also become a lot smarter since then.

Progressive Enhancement

This methodology is in-line with Tim Berners-Lee’s original vision of the internet – to be universally accessible – and at its very core is focused on content. The rationale behind this is simple: Every browser, regardless of platform or brand (PC, mobile phone, internet underwear etc.) shares one thing in common: they can all display content. This means there is no browser or platform favouritism where Progressive Enhancement is concerned.

How does it work?

If you’ve been reading the article on this blog then you’ll be well aware I’m constantly nagging about a big advocate of separating content from the presentation. If you develop your sites with this in mind then the chances are you’re already following the Progressive Enhancement method. How can you be sure? Here’s how a typical web site is developed using the Progressive Enhancement methodology.

Putting it into practice

As you can clearly see the Progressive Enhancement methodology aside from providing the most logical work-flow is also going to help you deliver web sites accessible to the greatest audience possible.

In future articles I will show examples of putting Progressive Enhancement into practice (you could start by reading ‘Regarding Semantics‘), and also elaborate on the Unobtrusive JavaScript technique.

Until then, this article should have made you aware of which method you are currently practicing and hopefully given you something to think about for future projects.

Who is That Web Guy?

Michael is a veteran web designer / developer / usability evangelist, practitioner of W3C guidelines, and currently head of the web dev unit at Stormbox, a branding and creative communications agency located in Perth, Western Australia.

5 Responses to Graceful Degradation and Progressive Enhancement. Which do you practice?

  1. AA Anderson says:
    Progressive Enhancement FTW. I hadn’t heard about it until a few months ago. One thing you should mention is that none of it works unless your JS framework is unobtrusive.
  2. Bruce says:
    Thanks for clearing that up
  3. That Web Guy says:
    Thanks. I mentioned Unobtrusive JavaScript briefly towards the end but I also plan to elaborate on that in another article soon. Thanks for reading.
  4. Leane says:
    Cheers for the great explanation. I learn something new every time I come back here.
  5. A Novice says:
    I learn something new here every time. Any chance you could write something about image sprites?

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

+ 5 = seven