When you look at the development cycle of a piece of software like a web application, compatibility is probably one of the least fun aspects of a project. With websites specifically, developers have a handful of browsers and rendering engines to test, each of which still supports an array of versions. This task can seem a little insipid at times, which is why many smaller sites undergo minimal testing.
Progressive enhancement and graceful degradation are the two different paradigms you can employ to ensure your web project looks (and works) great when rendered on any client with the least amount of superfluous testing possible. They’re both good models to adopt when working on your project and the one you pick will likely depend on the nature of the project and the way you approach the front-end development stylistically.
Graceful degradation typically involves building your front end out to the point where it’s a finished product, then testing in other (sometimes less sophisticated) browsers and then building and testing “fall backs” for lower supported versions of those browsers. This allows a front-end developer to creatively design interfaces using the latest technologies, but also ensures that the site functions on older clients.
Progressive enhancement entails starting simple and building up. By not depending on any novel technologies and keeping essential functionality simple, one can swiftly ensure it’s compatible in various versions of all common browsers. More c0mplex features are then added, but they’re usually almost entirely visual and non-essential to the site’s purpose.
My choice on which to use depends on what it is I’m doing: if I’m building something without using very much 3rd party code and if much of the logic will be done server side, I can safely take the progressive enhancement route. If I’m building a unique and complex user experience, graceful degradation is the more prudent choice.
In those occasional instances where either options would seem to be equally advantageous, I think of the site’s future and purpose and use that as gauge. Progressive enhancement feels sort of Zen and fits well when I’m trying to keep the project succinct. Graceful degradation affords the ability to have a little fun and experiment with developing interesting elements.