Buzzword Wednesdays: Progressive Enhancement

Submitted by Jesse Mutzebaugh on 11/06/2013 - 10:51:am

This one is the opposite of last week's Buzzword Wednesday: graceful degradation.

Progressive enhancement is similar concept to graceful degradation but in reverse. The web site or application would establish a base-level of user experience for most browsers. More advanced functionality would then be added when a browser supports it.

What to Consider

Your project will have to be designed with graceful degradation or progressive enhancement in mind. But what should you choose? Heres a few factors to think about:

Believe it or not, you could face some legal issues. Accessibility legislation may play a key role in your project - particularly for nonprofits and government sites. Legislation such as Section 508 (USA) and Disability Discrimination Act (UK) should be addressed at the beginning of your project.

Another thing to consider is what you're actually trying to build and what your users are going to be doing. For instance, if you have a project allowing people to create animations, such as Google Web Designer, then you will need to use HTML5, Flash, Silverlight, or some other software to allow this. In this case, older browsers simply will not work.

Choosing Your Approach

We have a belief that graceful degradation is the wrong way to solve the problem. Progressive enhancement seems to be the more logical and stable way to go for several reasons:

  • Consistent experience. By using solid foundations, you can ensure the experience will be virtually seamless across multiple devices and browsers.
  • Solid codebase. You can always embellish and enhance what you have if the users' browser supports it while maintaining core functionality. Take the following sayings:
    • Graceful degradation says "When it breaks, make sure theres a fix for it."
    • Progressive enhancement says "If it aint broke, don't break it. But you can always make it better."
  • Enhance user experience. Javascript is a valuable tool. One way it can help is to sort and filter a long list of results without refreshing the page. A nice feature, but again the functionality isn't lost if a user has javascript disabled and requires a page refresh.
  • Better support.It's much easier (with a good front-end developer) to design for all browsers and enhance when applicable than it is to supply a list of supported browsers. An example would be a company that offers Firefox plugins. The main demographic is Firefox users, but if they don't design for all browsers they'll potentially miss out on new leads for people interested in Firefox.
If it ain't broke, don't break it... but you can still make it better.

The exceptions would be when there is absolutely no workaround. Front end developers using `negative margins` are probably doing something wrong. But if you have a web app like Google Web Designer (see above) or mind-map creator Mindjet, you'll have no choice but to leave some users behind or, better yet, "encourage" them to upgrade their browser/software.

What do you think?

Do you think we should even consider older browsers used by less than 5% of users? I mean it is 2013 and technology has come a long way. Let me know your thoughts on progressive enhancement in the comments below.