Letting Go of Node.js

TL;DR version: I'm a JavaScript snob who's now learning Go (http://golang.org) and plans to drop Node.js. I'll be sharing my learnings here in the coming weeks.

Why Dave... why?!

I love JavaScript. I've been a huge advocate (both figurative and literal) of this quirky language since 1995. And for the past ten years I've been focused on using JavaScript for app development for the browser, wrapped in some native app, or installed directly as first class citizens on certain web-centric operating systems like Chrome OS, BlackBerry 10, Tizen, FireFox OS and webOS. I've even written a few JavaScript app frameworks, including Jo app framework which I open sourced in 2009.

I was an early advocate of JavaScript on the command line (remember Rhino?) and even as a web server (Helma). When Node.js came out, I was a big fan (again, both literal and figurative), but I've since soured on it.

JavaScript vs Go

What's wrong with Node.js

Basically, Node.js has turned into Java. But with a maze of twisty packages which vary greatly in... robustness, to be kind. Oh, and all the irritating callbacks that I already put up with on the client side now make the server feel like a kludge.

Basically, being able to say "but it's JavaScript!!111!" no longer cuts it for me. I appreciate all the work the developers are putting into it every day, and in many ways I'm super proud to see JavaScript "win" (seriously, one language to go end-to-end on the web -- amazing!), but I've always felt like Node.js is a bit sloppy for server side work.

Learning Go

Normally I'm a little wary of anything from Google (no offense guys, you're super cool but you're also super corporate), but I've been looking for a new server side language and Go looked interesting.

Since 1994, I've deployed web server apps written in: C (yes, C), ksh (yes, ksh), Perl, ColdFusion, VBScript, WebGroove, PHP, Java (ugh), and Node.js. My favorite as a server side solution is of course... none of them.

When I look back at the languages I've learned over the years (excluding such amazing bits of crap like REXX), a few stand out:

  • C for its simplicity
  • Perl for its eccentricities
  • JavaScript for its... charm

Looking over Go examples, it seems built for server apps. Plus, if I squint really hard, Go looks a little like C or JavaScript (or Perl, because I was "that person" who made their Perl code look like ANSI C).

Step 0.

I grabbed a Kindle copy of An Introduction to Programming in Go tonight for $3 and I've mostly digested it.

An Introduction to Programming in Go

When I get more free time this week, I'll be doing some Go coding and posting what I discover. Have any hot questions about switching to Go? Let me know in the comments below.

Endorse davebalmer on Coderwall submit to reddit
comments powered by Disqus