Three Worthwhile Posts on Progressive Enhancement

by {"name"=>"Aaron Gustafson", "twitter"=>"AaronGustafson", "googleplus"=>"AaronGustafson"} on 13 February 2015

Jason Garber has penned a series of posts on progressive enhancement. Here’s a quick rundown on what they cover and why you should read them.

Designing Experience Layers

In his first post, Jason picks up on a drumbeat I’ve been hammering on for years: we need to consider experience a continuum, not a monolithic thing.

Today’s Web makes no guarantees. Every bit of code—HTML, CSS, and JavaScript—shipped from a server across the wire acts as a suggestion as to how the browser should interpret and display content. More often than not, everything works planned, but for any number of reasons, a browser could fail to request or render a particular asset.

In other words, get to know fault tolerance as it applies to web design and don’t make any assumptions about how your content will be rendered/experienced.

His conclusion is an important one:

Approaching design through the lens of experience layers is the design strategy for the Web; one that’s better for users and designers alike.

Amen!

In Defense of Progressive Enhancement

In his follow-up, Jason defends his position against a lengthy comment from his supervisor at Viget. Jason’s responses are dead on:

  1. JavaScript is not a baseline (or a given) and
  2. When large sites put their eggs in the JS basket, they set a bad example for other developers.

His summation is perfect:

I remain unconvinced that abandoning progressive enhancement in favor of JavaScript-first development is better for users or is the direction the Web is inevitably heading. It’s our responsibility to do right by the billions already online and the next billion preparing to come online. We can achieve this by designing robust, resilient, layered experiences using techniques like progressive enhancement.

Again, fantastic.

The Practical Case for Progressive Enhancement

Continuing the thread, Jason assembles more reasons to adopt the progressive enhancement philosophy.

  1. The “Moral” Argument for Progressive Enhancement - Personally, I think Jason gives in too easily on this. Access to content is a social justice issue and that is nothing to gloss over. In some cases it is also a legal requirement.
  2. The “Cost” of Progressive Enhancement - Jason does a good job addressing the costs (monetarily and temporally) associated with adopting progressive enhancement in terms of building, testing, and supporting websites. As he says, it is more costly to “bolt on” accessibility and progressive enhancement at the end of a project. He is also correct in his assertion that progressively-enhanced websites actually require less testing. And when you draw a stark line between support and optimization, support for additional browsers and devices also becomes far less costly. What Jason was missing was numbers to back all this up. I have those numbers. Enjoy.
  3. Practicality - Finally, Jason calls out games and their ilk as edge cases. He correctly asserts that the vast majority of properties on the Web could easily be built following progressive enhancement. Sure, you might not build a Photoshop clone using progressive enhancement, but how many of you are building an image editor for the Web? I didn’t think so.

Conclusion

In all, this was a nice little series. Great work Jason! If you want to dig into this progressive enhancement stuff a bit more, you can read the entirety of my award-winning book Adaptive Web Design: Crafting Rich Experiences with Progressive Enhancement online, for free.