“I like HTML5, but I think you're duct taping a horn on a horse and hoping it will become a unicorn.”
Shawn Wildermuth hit the nail on the head with a recent analysis entitled “The Next Application Platform? All of them... ” It would be interesting to see how many more hits the article would have gotten with a title like “XYZ is dead” or “The Death of XYZ,” perhaps something along the lines of “The Death of the One Stop platform.”
A basic summary is that he points to a future in which developers tangle themselves with the following development targets:
- An HTML5 solution for the web
- Plugins to extend HTML5 as necessary
- Desktop/Browser apps for in house/well known customers
- Apps for mobile/tablets in Objective-C, Java, and Silverlight
The sentiments are corroborated by my own experience, most recently even with a potential customer who wanted to have an iPad friendly application (native) but also wanted to support web based users who had no such device. If I could translate the request, it could simply be that they want things in the best possible experience for each of the disparate platforms for which they had users. Of course the smart phone was no exception.
In a world like this, what could the future portend but that we will have multiple platforms, no singular delivery, and a constantly increasing need to build things quickly, portably?
I’ve cited the article quite a bit but over the years I’ve always gone back to Jonathan Edwards article on Beautiful Code:
“I wish someone had instead warned me that programming is a desperate losing battle against the unconquerable complexity of code, and the treachery of requirements.”
Although Edwards was talking more specifically about code, all of my experience points towards this truth in the realms of the disparate platforms, specifically that getting something to work in a “real world” where people use different operating systems, browsers, displays, and connectivity paradigms. Over the years there have been different tactics in trying to solve the problem: web standards, ActiveX controls, Java, plugins, and of course the latest new craze, HTML5. It’s not that these tactics (and the technologies related to them) are bad: I still advocate web standards to a point, I still have my day job programming Silverlight. It’s just that the pragmatist in me thinks this is the Arab-Israeli conflict in software: no perfect solution no matter how badly its desired by those in each of the platform camps.
The big insight for me as a developer is this line:
“This means as a developer you'll need to expand what you know and learn more platforms. Is that bad or good? Both. It means more work for all of us, but it does mean you'll need to less focus on silo's of platforms and use your knowledge across these platforms.”