Andrew Kelley

Become a patron

I am not a "JavaScript Developer".

It seems that the tech world is trying to thrust upon me an identity which I do not hold. GitHub puts "JavaScript" right under my name:

Here are snippets from actual emails I've received from recruiters:

We are currently expanding our Engineering team here in New York City and are looking for a JavaScript Developer to join our team. I think you'd be a great fit.
Description: HTML 5 Javascript Developer
Looking for an experienced javascript engineer...
This is a lead JavaScript developer that has a great object oriented foundation.
I am also wondering if you would have any interest in learning more about a specific Lead JavaScript Developer position that I am searching on which looks as if it at least might be a good fit for you.

I am not a "JavaScript Developer".

I am a generalist.

I am most engaged when working on hard problems that I have not yet wrapped my brain around.

Sometimes this involves writing a web server.
Sometimes it involves drawing designs or trigonometry problems on paper.
Sometimes it means making a video game in a language I've never used before.
Sometimes it involves creating animations.
Sometimes it means trying to recompile NES games into native executables.
Sometimes it involves using JavaScript.

But never does my thought process go like this:

  1. Hmm. I want to write a JavaScript program.
  2. What project can I work on so that I can use JavaScript?
  3. Hmm, Node.js looks fun, I think I will create a library to help you create Minecraft bots!

It's more like this:

  1. Minecraft is fun. I bet it would be even more fun to write bots to do this work for me.
  2. (2 days later) get a basic graphical client working with C++ and Qt
  3. Hmm, with this framework in place it would be cool to allow people to write their own scripts using a stable API.
  4. JavaScript seems like a nice plugin scripting language, and it's built right into Qt!
  5. (10 months later) Done! The c++ platform runs user-land JavaScript bots and provides a Minecraft API.
  6. (1 year later) Hmm. This abandoned project could probably be re-done pretty cleanly as a Node.js module.
  7. (2 months later) Done! Yep this is pretty nice and clean.

Or sometimes it goes like this:

  1. I want a program to turn any reasonable audio file into a png of its waveform, and it has to be fast.
  2. Okay then, I'll use libsox, libpng, and C.
  3. Done! It's nice and fast.

I've created nontrivial applications languages including but not limited to:

I could write you a genetic algorithm or implement A* search in any of these languages without looking up any reference material.

I've worked on nontrivial projects using frameworks including but not limited to:

Some of the things I've built include but are not limited to:

I could go on, but I'm not trying to brag; I'm trying to explain why I am annoyed at being labeled a "JavaScript Developer".

If you want to call me something, it should be "Interesting Thing Developer" or "Problem Solver". I'll even accept "Software Developer".

But I am not a "JavaScript Developer".