Friday, January 16, 2015

Only Fools Rush In

Image of Java, er, Old Faithful
I fear I may be getting old. There was once a time when I rushed for the latest technology stack being touted as the "hip new way of doing x, y and z" and scoffed at the older "dinosaur" programmers who were reluctant to try out this new hotness that's being lauded by Reddit users and is steadily gaining traction on Github.

Four years have passed, and upon reflecting on my habits for selecting technologies for projects as of late, it would seem that I, too, have joined the dinosaur herd... but is that necessarily a bad thing?

I mean, sure, this new framework or tool has a flashy new website with parallel scrolling and SVG animation out the wazoo, but does it mean that it's time to flee from my resting place on the rock of surety and hop and skip on the ever changing, ever shifting (and ever deprecating) sands of "the new hotness?"

The obvious answer would be yes and no - yes, because in this line of work you need to keep that skill base very up to date, and no because nothing is worse than setting your heart on a way forward with a framework only for it to get uppity and start meandering down a winding road of deprecations, refactorings and (sometimes) outright revamps and you find yourself pushing back deadlines as you scramble to re-learn the damn thing because v2.0 took v1.9's APIs out into the back yard and put two to the back of its head.

My point is don't rush for the new technology/framework/stack as soon as you hear about it. If it's still in version 0.x.x it's probably best to keep away from it until it matures a little bit more. Basing any of your production applications on a technology this early in development is making ample room for headaches later down when updates are due. No one is saying to avoid new tech completely though - download it to your sandbox and build a few small apps; it won't hurt. You might even be able to contribute code to the project in the process.

At the time of writing NodeJS is currently at version 0.10.35. Will I select it as the foundation for  my next official project? No. I will, however use it and the (very awesome) Gulp plugin to compile my Less CSS files, minify my Javascript and other small things. And yes, I've only just started using build tools over the last week or so. For my next major project I would much rather rely on the stability and "boringness" of Java. I can bet my bottom dollar that there's a library to perform almost any task and a documented solution to any problem I might encounter during development. The framework launched about a year ago is not as likely to afford me this comfort. Sure Java might not be a sexy as [insert new-fangled language here] but it sure is faithful and, most importantly, predictable - attributes that make it my primary choice for major application development.

TL;DR;
It might seem obvious, but don't use early stage technologies heavily in production. Stick to something that's a lot more mature and stable to avoid surprises and headaches come update time.