Progressive Enhancement Makes Me Sad
There's been a lot of talk lately in favour of progressive enhancement and 'universal' (isomorphic) applications. Apparently, server rendering increases performance, robustness, and the parsability and interoperability of content.
I welcome these arguments because I'm magnanimous.
But there are grave concerns regarding the adoption of progressive rendering and/or isomorphism which I feel should be addressed and apparently I'm the only one brave enough to go against the grain and address them. No need to thank me.
1. It's hard :(
Making applications which either render static content then enhance it with javascript or which run as applications on both the server and client in tandem is really, really difficult. Like really.
Sure, it means that more users will be able to access content more quickly and reliably—I'm not disputing that. But who's to say there's going to be any users? Or any content, for that matter? Half the projects I work on get shelved because of company reorgs. What use is spending all that extra time on progressive enhancement complexity, then? Wise up.
But that's not even the main problem. The main problem is that my identity is built around intellectual competency. This means that, when I find something intellectually challenging, I kind of lose it pretty badly.
So, before you consider embarking on a universal app architecture, ask yourself: "Do I really need someone to experience maddening cognitive dissonance and go postal on me?"
Probably not.*
(*This sounds kind of like a threat LOL! Soz LOL!)
2. There are no benefits to me
It's true that progressive enhancement makes life easier for users in certain circumstances, like ones on high latency networks or low powered devices etc. Don't get me wrong—I'm all for writing applications for users, but aren't we forgetting someone? Since I have to build the damned app, shouldn't I get a say on how it's built?
End users are an unknown quantity and there's not much we can do about that. On the other hand, I already know a lot about me because I am me. It's a no-brainer to be taking advantage of this insider knowledge.
So, what do I know about me? Well, I've got a pretty good setup for starters: Fibre, 16GB RAM. Also, I can't stand implementing progressive enhancement—gross! (see 1)
Most of all, though, I like making new features. The less time I spend on creating a robust architecture (boring) the more time I have for creating features. And you know what they say: More features equals better UX. Everyone wins.
3. It encourages bad behaviour
If we're going out of our way (and it really is going out of our way) to make sure content can be delivered to low power devices with tiny data contracts on shitty networks, we're just giving our audience an excuse not to upgrade.
I want you to be the best that you can be!
Then there's trains. Urgh. So you're having trouble downloading a client-rendered, blocking-javascript-dependent web page over 2G because you're on a train? The solution's staring you in the face: Stop travelling by train. Either get a pad in the city center near your place of work or sleep under your desk. That's what I did, why can't you?
Honestly, take some responsibility.
4. It's all web apps now
The Web was originally conceived to publish and share writing for the purposes of acquiring and corroborating knowledge. Thankfully, those dark and primitive days are behind us and we've moved onto better things, like building apps that look at photos of dogs and try to guess what age they are.
There's no "document" version of an app that guesses what age your dog is. I mean, what would that even look like? A picture of someone else's dog with the text "I don't know how old I am, sorry" written underneath it? That's pathetic. I'd sooner just see nothing, to be perfectly frank.
Sure, if you don't want to know how old your browser thinks your dog is, be my guest and turn off javascript or go on a train ride (see 3). You don't deserve to know how old your dog is anyway.
Just don't come crying to me when someone close to you asks how old your dog is and you have to say, "I don't know, somewhere between 5 and 8, I think" instead of, "I don't know, but someone shared this web app on Facebook that's quite fun. Let me show you. Hold on. Here it is. Hold on. Sorry. Hold on. Oh, never mind."