Nope, I don't know JS

I've been writing software for a living for the last 15 years.  I've been doing mostly full-stack web development for nine of those.  That means I've written my fair share of JavaScript code.  But you know what?  It turns out I really don't know JS.  I thought I did.  But I don't.

I reached this conclusion after reading the first two and a half of the six books in Kyle Simpson's You Don't Know JS series.  Normally, I'd wait until I was finished with the series to blog about it, but seriously, this is good stuff.  If you think you have a decent grasp of JavaScript, you should read this to test your mettle.

Forget the W3Schools tutorials or jQuery guides you might have read to learn JavaScript in the first place.  This is way beyond that.  The goal of the You Don't Know JS series is not to teach you "how to code JavaScript" but rather to help you master JavaScript.  It's a deep-dive into the guts of JavaScript - not the subset most of us are used to, but what's actually spelled out in the ECMAScript specifications. 

The beautiful thing about this series is that it's not about expanding your catalog of technical tricks.  Most of it (well, of the 2.5 books I've read so far, anyway) is about understanding the fundamentals in a deep way.  For example, going beyond "oh, this in JavaScript is weird" and actually understanding the rules behind how the dynamic binding of this works and how it differs from the lexical scope used for everything else.  Things like that are easy to gloss over.  After all, you don't really need to know the gory details of how this is bound in order to write code and be productive.  But these kinds of things really are important.  They're the difference between "knowing" JavaScript and knowing JavaScript. 

To put it another way, there's more to the craft of building software than just "getting the job done".  For some people, just "getting it done" is sufficient - and that's fine: they're satisfied to remain journeymen.  But for some people, that's not enough - they want to be master craftsmen.  This series is for them.

Music to code by

Lately I've been listening to a lot of Music To Code By at work.  It's a project by Carl Franklin of .NET Rocks! fame.  The idea is that it's a collection of music tracks that will help you stay in the "flow" while working on code or pretty much anything else.  He describes it as a "productivity tool" rather than an artistic endeavor.

I've been listening to MTCB for a few months now.  Carl is up to 11 tracks (I have all of them), so there's a nice variety to choose from.  Each track is 25 minutes long, to coincide with a Pomodoro cycle (if you care about that).  The tracks are extremely repetitive, with a nice, laid-back kind of vibe.  The goal, which I think Carl has accomplished admirably, is for the tracks to be "not boring", but at the same time not so interesting that you actively listen to them.

Believe it or not, MTCB actually solves a problem that I've had for years.  In the office, I often end up putting on my headphones to try to drown out the distraction of the surrounding noise.  But whatever I listen too inevitably ends up either boring or distracting.  If I listen to my favorite music, it eventually gets old and annoying.  If I listen to new music, I frequently end up distracted.  Same thing with podcasts - I either end up listening to the podcast rather than working or miss the good part of the podcast because I'm engrossed in my work.

Music To Code By does a great job of covering up the noise while just fading into the background.  Even when listening to a track for the first time, the repetition prevents it from holding your interest for more than a couple of minutes.  But at the same time it manages to be unobtrusive enough that you don't really get sick of it - after a while, you just don't even hear it.  So you're left with the benefits of music to cover up the office noise without the risk of being distracted from your work.

I definitely recommend giving it a try.  If you want to start small, the individual tracks are $5 a piece (except for the first three, which I believe are only available in the $18 "album").  However, there's now a $49 collection that includes everything.  I know that sounds a little steep when you consider that the entire point is that you're not going to listen to the music, but I've found it to be well worth the investment.