Why Learn Node.js?

node.js, javascript, testing, education edit

Because it's a new technology that solves the same old problems in new ways. JavaScript on the server has to work pretty hard to be maintainable so you'll have to learn about npm for package management,require for includes/dependencies, and testing frameworks like jasmine to make sure your code is kosher. These are the same powerful patterns that have influenced modern software development on other platforms.

Learning node.js also allows you to polish your JavaScript. When asked what languages a new or returning developer should learn to get up to speed on development today JavaScript has to be at the top of the heap. It is the language of the web (for better or for worse).

Like many of us, my JS has been decidedly client side for the bulk of my career. I grew up despising it's spaghetti complexity; spurning it for stabler languages like C# with things like type safety and compile warnings. I first found that JavaScript could be beautiful when I discoveredjQuery. The use of a fluent API to chain multiple behaviors together was elegant compared to the Vanilla.js that I could muster.

I read Crockford's JavaScript: The Good Parts around the same time I worked through the JavaScript koans of Liam McLennan and David Laing. All of that impressed me with the beauty and power of the language. I never had a chance to learn the language in a formal setting but it reminds me of how I wrote Scheme (a variant of Lisp) in college.

Which gets me back to my original thought on node.js. Maybe it's just wistful thinking but I like to imagine that the kids these days won't have it as bad as me when it comes to JavaScript. I see node as an opportunity to introduce JavaScript to those that don't know it well. And do it in the right way with the very best patterns, practices and community we have. For those that know their way around a === it's a way to provide feedback and guidance to a rapidly evolving domain.

So, because I'm closer to the former than the latter, I've started picking up node.js at Node School. The creators of Node School have structured educational modules that work the student through a series of increasingly complex programming challenges. Along the way you learn about the core concepts of node.js and pick up skills that can aide your JavaScript elsewhere as well. The whole thing is fully automated with a unit test suite hidden behind the colorful console based UI. When you drift off course, the system can point out which test cases you aren't passing and maybe drop a hint about what to do to make them work correctly.