For the last couple weeks at my day job, I’ve been building a simple single window javascript web app- an internal tool for cleaning, tagging, and maintaining our CRM data. At night I’ve been spending bits and pieces of free time getting better at iOS development by building a couple of native apps.1 Appropriately, the difference between the two experiences has been night and day. (See what I did there?)

Countless keystrokes have been spent on the web vs. native for mobile debate, so I won’t bother beating the dead Horse JS. But I will simply add my two cents: philosophical open vs. closed debates aside, the developer experience is simply leaps and bounds better in native iOS.2

On the web, the frontend toolchain is a hot mess. Node + npm + grunt + gulp + bower + requirejs + jasmine + mocha + html + haml + yaml + css + less + sass + jquery +…..I’ve only scratched the surface, and we haven’t even picked a JavaScript framework yet!3

XCode has its quirks and limitations, for sure, but at the end of the day you really just open it up and, well, code. Compared to the nightmare of constantly fiddling with all of the above, it’s frankly a dream come true.

We have all these layers and hacks on top of hacks because web technologies don’t actually make any sense. Building apps in HTML, CSS, and JavaScript isn’t just less than ideal, its borderline insane. We only accept the insanity because we’re used to it, and we can’t ditch these tools because, well…we’d break the Internet.

So is there any hope for less painful development on the web, or are we doomed to gimp forward with hacks and kludges while native mobile development gets cool new toys likes Swift?4 A few months ago I tweeted something half jokingly, but increasingly I think this really is the future:

NOW is the time to start treating JavaScript like browser bytecode. Languages like ClojureScript are well on the way to making this a reality. New entrants like Elm take the idea a step further compiling down not just to JavaScript, but to HTML and CSS as well, meaning you can write front end “web apps” without a single webby-feeling technology.

The future of web development is not a better markup language or another testing framework or a package manager you install with a package manager5 or a dynamic stylesheet language. And it’s definitely not yet another MVC JavaScript framework. These tools pale in comparison to the ever-improving counterparts on mobile, and developers will rightly shun the former for the latter.

If web development has a future it has to be this: sane, modern languages compiling down to web-stuff underneath.


1 One of which I just submitted for review to the App Store, fingers crossed!

2 Having done almost no Android development to date, I can’t speak to what its like on that platform. I’ve heard its rough around the edges, but has made some big strides recently.

3 For the record, I’m using React, which I actually really like and think brings a number of super smart and important ideas to the table.

4 And one day, one would assume, Go on Android.

5 npm install -g bower