Wednesday, May 7th, 2008

The seven rules of pragmatic progressive enhancement

Category: JavaScript, Tutorial, Unobtrusive JS, Usability

<>p>I’ve been talking about progressive enhancement here before and got a lot of flak in comments about it. It seemed that there was a general misunderstanding of progressive enhancement and unobtrusive scripting as a “passing fad” or “backward facing rather than being innovative”.

I was asked by a design agency in London to go there and give a brown bag presentation (during lunch break) on the matter and took this as an opportunity to write up reasons and examples for progressive enhancement concentrating more on the why than on the how.

The gist would be to say: enhancing a product progressively means you’ll always deliver a working product – as you have no idea how your product can fail in certain environments, you plan for it to fail. This ties in nicely with the agile manifesto – you always deliver software that works.

In my talk I came up with seven “rules” of pragmatic progressive enhancement:

  1. Separate as much as possible
  2. Build on things that work
  3. Generate dependent markup
  4. Test for everything before you apply it
  5. Explore the environment
  6. Load on demand
  7. Modularize code

I’ve taken these ideas and backed them up with benefits you get by following them and code examples in a full article: Pragmatic Progressive Enhancement.

The article is licensed with Creative Commons and uses YUI in the example scripts, feel free to translate, remix and create examples using other libraries.

You can also read the slides on slideshare:

Pending the quality of the recording, there’ll also be a video available sooner or later.

Related Content:

  • Pragmatic SOA
    Jason Bloomberg discusses how SOA solves most problems and is best implemented when the benefits of SOA outweigh the cost of architectural change of...
  • Pragmatic Design
    If Java is truly to replace COBOL as an enterprise-wide standard, then it needs to be as easy to write as COBOL and as fast a C++ at runtime. In my...
  • Crisis management requires pragmatism
    Over the past two years I have facilitated more than 100 exercises for incident management teams from a range of organisations. These have varied in...
  • The Pragmatic Code Generator Programmer
    In this article we will reimplement an exercise taken from the best-selling book "The Pragmatic Programmer" written by Andy Hunt and Dave Thomas...
  • Sun's SOA Path stresses pragmatism
    Sun Microsystems is the latest in a series of vendors to announce an SOA services...

Posted by Chris Heilmann at 5:58 pm
3 Comments

+++--
3.9 rating from 20 votes

3 Comments »

Comments feed TrackBack URI

Very interesting read Chris!

Thanks for sharing :-)

Comment by MorganRoderick — May 8, 2008

I think that the most important thing is testing.

Comment by Snowcoredotnet — May 8, 2008

Top article. I’ve been pushing the progressive enhancement for the last few months at work, and it has really helped take us forward. Thanks for the post!

Comment by snowmeister — October 8, 2008

Leave a comment

You must be logged in to post a comment.