<context> I’m responding to pieces like The Sad State of Web development (now deleted by author), JavaScript fatigue, JavaScript Fatigue: An Alternative Perspective and No, I don’t want to configure your app. </context>

Google has been making web apps for a long time now.

Google Web Toolkit (a.k.a. GWT) exists. For many JavaScript developers, the very idea of GWT is absolutely crazy. “You’re writing Java that compiles to JavaScript? What? Why would be anyone voluntarily writing Java?”

Google Closure is similar. You’re writing JavaScript, yes, but… let’s be honest, if you look at any Closure code and squint a little, it’s basically Java.

Dart for the web is much better than Java or Closure (imho), but the idea is the same: you’re writing decidedly-not-JavaScript that’s then being automatically rewritten into JavaScript. You have a standard library. You have only one way (or one strongly preferred way) to do things. You are getting as far from JavaScript’s idiosyncrasies as possible. (Dart goes an extra mile — compared to Closure or TypeScript — by dropping JavaScript altogether and therefore having real block scope, sane equality semantics, lexically bound this, generics, mixins, and more opportunity for speed optimisations, for example. But the underlying motivation is the same.)

Is that the only correct approach to write web apps? No.

Is that a correct approach to write web apps? I certainly think so.

Things like GWT, Closure and Dart are here for people like me. Developers who “don’t particularly like or might not intimately know the intricacies of [JavaScript].”

That quote is from Josh Burgess’s defence of the current state of JavaScript.

For those new to JS development, or for those who are primarily back-end (but occasional front-end) engineers, coming from other languages, who don’t particularly like or might not intimately know the intricacies of the language, this can be troublesome. However, I’ve seen far too much negativity about this subject on Twitter, Medium, & Reddit (/r/javascript), and I think we need to take a step back and examine the reality of the situation and why it is the way it is. The nature of JavaScript, the language, is that it cannot break existing code in production. All updates to the language must provide backwards compatibility. Some people hate this. They want problematic features removed… but it is the way it is. It shouldn’t be viewed as a negative that can’t be overcome. It’s not a dark cloud looming overhead, forever burdening the front-end. It’s just a fact.

When reading that, all I could think of was this:

It’s not a dark cloud looming overhead.

But seriously: if there’s “far too much negativity” about something—anything—then there’s an opportunity for alternatives. Expecting a large portion of the potential developer base to bite the bullet is not a good long-term approach.

Google has been relatively successful with these alternative approaches. The current uptake of Dart internally at Google is just one manifestation. For another example, I know at least one person at Google who changed teams so that he could write in GWT (Java) and not in Closure (JavaScript).

Yes, there are developers like that.

As a friend told me this week:

You’ve either been productive with a type system, or you haven’t.

(To be clear: this article is not specifically about types. It’s about the whole package. Types are just what the friend and I happened to be talking about.)

My main point is: Most JavaScript developers don’t need Dart or GWT or Closure. If you don’t agree with The Sad State of the Web, you are not wrong. You are a person who can be productive in the JavaScript ecosystem. You can safely ignore Dart and similar projects, and you will still be successful, and in high demand.

But there are developers who want in on web development and who want to use things like GWT, Closure or Dart. And their approach is also valid. And they will also be successful and in high demand.