I started my professional development career in 1999, when I first was paid a salary to be a
developer. (I don’t count the few years before that when I was just having fun playing around
on the Web.) In 1999 the Web was a scary place. HTML files were loaded down with font
and table tags. CSS was just coming on the scene. JavaScript1 was only a few years old, and a
battlefield of various implementations existed across the major browsers. Sure, you could write
some JavaScript to do something in one browser, but would it work in another browser? Probably
not. Because of that, JavaScript got a bad name in the early 2000s.
In the middle of the 2000s two important things happened that helped improve JavaScript in
the eyes of web developers. The first was AJAX.2 AJAX enabled developers to make web pages
more interactive, and faster, by making remote calls back to the server in the background
without end users having to refresh their browsers.
The second was the popularity of JavaScript libraries, such as Prototype,3 that made writing
cross-browser JavaScript much simpler. You could use AJAX to make your applications more
responsive and easier to use and a library like Prototype to make sure it worked across major
browsers.
In 2010, and certainly in 2011, the Web started evolving into “single page” applications. These
applications were driven through the use of JavaScript frameworks, such as Backbone.js.4 These
frameworks allowed the use of an MVC5 design pattern using JavaScript. Whole applications
would be built in JavaScript and then downloaded and executed in the end user’s browser. This
all made for incredibly responsive and rich client-side applications.
On the developer’s side, however, things weren’t all roses. Although the frameworks and tools
made writing these sorts of applications easier, JavaScript itself proved to be the pain point.
JavaScript is at times both an incredibly powerful language and an incredibly frustrating one. It
is full of paradoxes and design traps that can quickly make your code unmanageable and bug
ridden.