The web was supposed to work like this:
You start with carefully and semantically marked-up content. Everybody can consume this: search engines, screen readers, feature phones, text browsers, etc.
Next you layer on the styles. They don’t need to look the same in every browser; you can add cool stuff for newer browsers, and the older ones will never know what they’re missing.
This strategy has been guiding our web development practices for quite a while now. Progressive enhancement for the win, right?
Maybe. Something new has been growing the past few years.
Web Apps and Client-side MVC
A new application framework called Meteor was recently released, and the first of their core principles neatly sums up what makes a web app different from a web site:
Data on the Wire. Don’t send HTML over the network. Send data and let the client decide how to render it.
There’s something pretty compelling about about this kind of approach. It makes richer interactions possible, and if you’re building a sophisticated application it might be the only way to stay scalable. But it’s a decidedly far cry from progressive enhancement.
What to Do
As usual, there’s never one right answer for every situation. You’ll need to think about who your audience is, how they’ll best accomplish their goals, and where you want to go with it. If you want to build the cutting-edge new hotness, an app will be perfect. If you want a site that works on as many devices as possible, progressive enhancement is probably a better approach.
In any case, front-end development continues to evolve as more coding moves from the back-end to the front. Keeping up with it all is tough, so your best bet is to get out there and start building some COOL STUFF.