Close

30th September 2015

JavaScript frameworks and the pace of change

Being a front-end software/web/app developer, in 2015, is awesome; we have evergreen browsers from all the major providers, the amount of browser specific hacks we need to use are the fewest. So many things have changed so much for the better. JavaScript as a language is going from strength to strength with the adoption of ES6 and fantastic tools such as babel that let ES5 browsers join the party.

But the rise of JavaScript has felt like a double edged sword of late, and I’m often left feeling like Neo in the Armoury.

http://imgur.com/eFMhXZH

Tank: What do you need? Neo: npm_modules…
lots of npm_modules.

The number of front-end tools is staggering, and I can’t help but wonder how a newcomer feels when they first use the Yeoman webapp generator to begin a project for example, and see what feels like “The Internet” being downloaded to their project’s npm_modules folder.

yeoman webapp

Not to mention how you choose this weeks “Hot Hotness” of a framework to use, each with their own slew of npm/bower dependencies.

Pushing the boundaries of what our tools can do is all well and good, so long as the tools are not creating barriers to entry for new developers. The more developers there are, the more cool web applications we will have coming out.

Looking at the current tooling landscape, React seems to be the “Backbone” of 2015, its getting all the attention and really is a great tool – but it feels like its only an interim solution until the browser providers step-up and implement natively the tech that is being shimmed in Polymer, which in my opinion, is where the web’s future will be – at the moment Polymer is a hodge-podge of JavaScript shims and polyfills, but as those bits of tech are covered by the browser, its usability will dramatically increase, potentially leaving React applications looking for a way to integrate/migrate.

React exists because Facebook needed a way to make their services as good as they can possibly be in terms of performance, on the web we have today; and they have been nice enough to pay that forward to the community for use and continued development.

Mozilla Chrome

The way I see it at the moment, is that Google and Mozilla are pro-web – working towards making the web the place to have all your apps, and the upcoming changes to Mozilla to make Firefox compatible with Chrome extensions is a very promising sign.

Microsoft seem to be “on the fence” on this, putting some effort into web while also pushing the native universal Windows app wherever possible; although, WinJS is an odd development giving you the (technology formerly known as) Metro app look to use in your web apps. Along with contributions such as RxJS and TypeScript.

Apple, on the other hand – feel very anti-web at the moment, attempting to hurt Google’s revenue through ad-blocking in iOS9, while allowing their own ads to bypass this. But in the end, this ad-blocking will just lead to smaller outfits going belly up as a large share of their revenue generally comes from those ads you will be blocking. Granted, I don’t particularly like ads as a user, but they are a necessary evil, and we all already accept that in traditional media (e.g. TV, Film, Magazines etc.). Then there is their lack of enthusiasm for pushing ahead with new browser features; I mean, come on Apple – where are HTML Imports, Custom Elements and Shadow DOM for Safari!?

The web is going to be the future for most users, a large number of “native ” apps are actually web apps powered by JavaScript wrapped in an icon and WebView with platform specific integrations (e.g. Facebook, Amazon..) making JavaScript relevant to a broader developer base than you might think.

The fact is that keeping up with the pace of change is difficult, but if you are just getting started – it might be more beneficial to learn the tech of yester-year, Backbone is still very relevant even in 2015, people are still using it day-in, day-out. Many companies are invested with sites/apps that run on the web of a few years ago, and while that work may not be as exciting, or look as cool on your CV/Resume as being on a bleeding edge build of Polymer or Angular 2, it still needs support, patching, bug fixing – learning this stuff is still very useful, and it will help when moving onto the newer stuff.

Your also not trying to learn something where the rules are in flux, and believe it or not, you can make just as nice a looking and performant web application in vanillaJS (if you wanted to, and properly understood JavaScript) as you can with whatever has the number 1 spot of todays GitHub trends list.

The best advice I could give any developer, is don’t try to keep up with it all just for the sake of it, I see GitHub profiles where a developer has many many repos with projects jumping from framework to framework, and while it may look super impressive to recruiters – I struggle to see how they could understand fully all of those frameworks/libraries and be able to support all that work should they need to, let alone be able to talk in any depth in interview about that framework.

By all means, keep your finger on the pulse – but until you actually need to decide on a framework/library for a project, there’s really no need to dive in head first to every new thing that hits HackerNews, just checkout this impressive list of current frameworks and if you can say honestly, “Yes, I know all of these and have created production web apps in them all.”, then, I tip my hat to you sir.

You may also be interested in a previous post of mine on JavaScript Learning Resources for some picks of what to read at the varying stages of your JavaScript journey.

Leave a Reply