Progressive Enhancement vs. Graceful Degradation

Today I read two different articles that discuss the differences between two types of web development – progressive enhancement and graceful degradation.  Progressive enhancement can be defined as delivering the best possible experience to the widest possible audience, regardless of the device type being used.  With this method, you write code that works in all base-level browsers then add layers for browsers that support more advanced capabilities. With graceful degradation, you build your site completely with all the bells and whistles.  Then you add workarounds or fallbacks for the browsers that cannot offer support. 

 In the article Graceful Degradation Versus Progressive Enhancement by Chris Heilmann, the author points out that with graceful degradation assumptions are made regarding the user’s environment and their ability to make upgrades.  While he is a supporter of progressive enhancement, he admits there are times when graceful degradation is in order.  This includes old websites for which there is not time to rebuild, websites highly dependent on scripting and new websites where development timelines restrict full progressive enhancement. Advantages of progressive enhancement include a working website, no matter the environment, smooth transitions to new browsers and easier maintenance.   

 The second article is Progressive Enhancement – What it is and how to use it by Sam Dwyer. He defines progressive enhancement as the journey from simplicity to complexity and graceful degradation as the journey from complexity to simplicity.  He points out strengths of progressive enhancement (PE), including a strong base to fall back on, the ability to release projects early then adding more complex code later, ease of maintenance and good usability.

The author then explains how to create code with PE using layers.  The first layer includes clean, semantic HTML which will allow any user to navigate your site.  Next, is the CSS layer which will allows users to view your site with it’s advanced visual enhancements.  Third is a layer of Javascript which can provide another level of usability to your users.

I agree with both these authors.  As time moves forward, the web will continue to offer new challenges to web designers in order to keep their sites viewable by all.  These articles help me see that future usability of the web is largely dependent upon the practices of web developers.  What route will we choose to take?  Progressive Enhancement will provide the guidelines we need in order to ensure a highly usable and accessible web experience for everyone.