The Fallacy of Modern Web Development

Please note that I’m writing this without any proof-reading. This is pure stream-of-consciousness.

iCloud.com was just announced. That’s pretty awesome: iCloud’s web apps include some pretty amazing interactions. If you haven’t seen them, get a developer account and log in. You should do that now, the rest of this blog post assumes you’ve seen them. iCloud is pretty fuckin’ amazing: The animations are incredible, the interactions are buttery, and the UI is polished as possibly could be. Having praised the iCloud suite of applications, one thing worth noting is: They prove that a buttery-smooth UI is not impossible to build on the web.

iCloud is tangential the the point of this blog, but it highlights a point I want to make: People are surprised and impressed that the web stack is capable of implementing the interactions which iCloud implements. We as web developers ought to be embarrassed about that. It shouldn’t be a magical surprised that a good, no-compromise UX is possible on the web.

Everyone expects Apple to release software that is far and beyond the level of sophistication and polish that we are accustomed to, but we shouldn’t be surprised that a technical achievement is possible which we previously thought wasn’t. My hypothesis is that we as web developers are so entrenched in our trees, we can’t see the forest. Every javascript developer is developing their own hot little javascript micro-framework or even fully-developer mature framework to one part of the web development story or another. I call bullshit. As far as I’m concerned, we’re all chasing our tails trying to solve the same damned problem over and over again. People are somehow susceptible to false benefits which are easy to preach, but hard to verify. I say: Stop worrying about kilobytes, and start worrying about web developers being oblivious to the capabilities of the web.

I could spend an entire blog post outlining the fallacies of micro-frameworks and niche solutions, but I feel like Apple has already proven many of my points: Take a look at the iPod. Not only has the iPod achieved market dominance in its segment, it has also maintained that dominance long enough for the entire market segment to become irrelevant. There are many reasons for the iPod’s success, but the one I think is worth highlighting in this conversation is its ecosystem. An iPod without iTunes is like a human body without blood. Why don’t we Web Developers learn this lesson?

There are more MVC based frameworks than I can count. Since SproutCore 2.0 has started establishing its namesake with bindings support and the observer layer, it seems like every single new javascript framework ships with the same live-updating support. This isn’t an apologetic SproutCore blog post though, I could spend an entire blog post telling you why all these framework developers are wasting their time and chasing their own tails, but the point is: The people developing these clones are really smart, but they’re not building anything worthwhile.

It shouldn’t be a surprise to people what you can do with CSS 3D Transformations. At this point, that’s well understood and well documented. It’s like somebody being surprised that mixing peanut-butter and jelly with some bread creates a tasty combination. What should be a surprise is what happens when you build a fully-integrated solution on top of it. Instead of developing more redundant MVCframeworks, we need to coalesce our energy on a few proven solutions.

Native developers don’t have this problem. You never hear of widespread news when a native developer finds out that if you call methods on UIImagePickerController then you magically get access to the device’s camera, but it’s common-place to find out that people exposing and using the intricacies of CSS3 transforms are creating incredible feats of UX.

We need to cut this shit out. I don’t care how small your microframework is. Bandwidth isn’t the problem. If you think a 5kb framework is preferable to a 7kb framework, your are bat-shit insane and patently wrong. There is no “maybe he has a point”. No, it’s black-and-white. File size isn’t the problem, code-size is. If you string-wrap your code, your OK. Don’t listen to people who tell you otherwise, they’re lying to you (though probably not intentionally).

A JavaScript-based MVC framework is only a small part of the solution, the same way an iPod is a small part of the digital music solution. A proper, scalable backend along with all the services and add-ons that make up a server stack are required to create an ecosystem. But that still doesn’t quite cover the whole story: The stack not only has to exist (Nokia, RIM, Microsoft), but it also has to be tightly integrated and seamless (Apple).

Partly as a disclaimer, and partly as supporting evidence, I should make it clear that I work at Strobe Inc. We’re the first people to really build an end-to-end solution for web development. Lots of other developers are working on solving certain problems in the domain, but none are providing a full-stack, integrated solution like we are. Strobe is sponsoring projects like bpm, sproutcore, and the strobe platform to once-and-for-all solve the problem of developing web application from the ground up. I strongly believe in what we’re doing, which is why I’m spending time to make sure we do it, but the point is that the rest of us should stop wasting time and start moving our platform together.

We have a gem on our hands: Let’s stop arguing about who has the better hammer and let’s start chiseling it into a beautiful piece of jewelry.