Jul 30, 2014 · 5 min read

How is TJ Holowaychuk so insanely productive?

I use like 300 of his open source projects, I feel like I owe him money or something.

One out of three known photos of TJ Holowaychuck.

Admit the fact.

As of today, it is possible to produce a Node.js application exclusively from frameworks, tools and libraries developed by TJ Holowaychuck—and TJ alone. If you are doing things with Node, you will not escape TJ. He is omnipresent. His license is MIT. His name is cited over 1.3 million times in public source code on Github. He is single, 26 years old. His pet ferret Tobi is a running gag in the JavaScript community. On his typical Sunday, TJ will write more JavaScript code than you will write in a week, and it will be better and cleaner than yours, and even then he will find time to tweet up to 20 times a day about that Riddick movie, respond to all of his Github feedback and finish off with some landscape photography. TJ is someone to wonder about and look up to.

And now for some conspiracy theory:

  1. If you ever wrote any code to make a living, and tend to believe that self-diagnosed OCD fits the bill of someone who has become such a huge factor in JavaScript movement, take a closer look at how TJ presents himself to the world. He is a graphic designer who “never reads books” and “never went to school”. Back in 2008, he was actively contributing to Drupal and designed a few UI themes for it, while his website design business in Victoria BC (which lent its name to TJ’s Github account) was slowly fading away.
  2. In late 2008, TJ published a gist where he solves a simple problem in PHP, JavaScript, Haskell, Ruby and ANSI C — showing consistent, concise and mature coding style.
  3. In course of two years starting around late 2009, TJ emerged to become responsible for a fair half of the core Node.js ecosystem, wrote a few Unix daemons, and then moved on to a statically typed programming language with cooperative thread concurrency. Ever since, he is consistently in top three npm contributors. Amazingly, during the same period of time (since Sept 2010) he also had time to remain a full-time employee of a Californian startup LearnBoost. Too bad no one ever saw him in SF, since he prefers to work remotely.
  4. The best and most prolific coders are the most reclusive of species — TJ is yet to be spotted at any major software conference. Have you ever met him in person, or at least heard him speaking in public? I didn’t, and I couldn’t find any videos. Some people reportedly attended TJ’s workshop at JSConf in Argentina in 2012, but no single video from that event ever surfaced.
  5. Yet, way back at QCon SF 2010, I have had the pleasure to attend Ryan Dahl’s full-day tutorial on Express framework, written and maintained by a certain enigmatic web designer from Canada (see initial commit).
  6. A few Vimeo screencasts narrated by TJ (along with a handful of self-portraits found in the wild) are not too convincing, although all of them are about submitting us into simplicity and comfort of using one of his JS libraries and frameworks. We hear a confident, relaxed voice of someone who has failed to make a public appearance in five years.
  7. If you think that’s ok, check out a live feed of Notch coding in real-time for a much better evidence of one’s existence. Or try googling for Obie Fernandez, the Ruby guy. Or Mike Bostock, of d3 fame. This is Dominic Tarr and his videos. Substack lives off his contributions. Here are Tarr and Substack mounting a flag, as pictured by Rod Vagg. All these amazing guys have healthy, believable digital footprints. They add up.
  8. Since there is no shortage of TJ’s code and commit messages, there is plenty of room for analysis. Take an example. Throughout 2011-2012, TJ has been faithful to his trademark style of declaring imports:

var EventEmitter = require(‘events’).EventEmitter , debug = require(‘debug’)(‘mocha:suite’) , milliseconds = require(‘./ms’) , utils = require(‘./utils’) , Hook = require(‘./hook’);

  1. However, in 2013, he had a sudden change of heart and now sometimes prefers to declare them like this:

var Emitter = require(‘events’).EventEmitter;
var debug = require(‘debug’)(‘slate-irc’);
var Parser = require(‘slate-irc-parser’);
var replies = require(‘irc-replies’);
var welcome = require(‘./lib/plugins/welcome’);
var privmsg = require(‘./lib/plugins/privmsg’);
var notice = require(‘./lib/plugins/notice’);
var topic = require(‘./lib/plugins/topic’);
var names = require(‘./lib/plugins/names’);
var nick = require(‘./lib/plugins/nick’);
var quit = require(‘./lib/plugins/quit’);
var away = require(‘./lib/plugins/away’);
var pong = require(‘./lib/plugins/pong’);
var join = require(‘./lib/plugins/join’);
var part = require(‘./lib/plugins/part’);
var kick = require(‘./lib/plugins/kick’);
var whois = require(‘./lib/plugins/whois’);

  1. Use blame if you still don’t believe that both were committed by the same person. Hmm.
  2. The real fun begins when you start looking for habitual patterns in TJ’s commit messages across his ~300 projects. I hate to spoil it for you, but you really want to begin with his use of capitals. Then look at his tweets. Then back at commit messages. Then back at tweets. Repeat.
  3. Although TJ never reads books, he occasionally finds time to write them. As you would guess, books by someone who went from a local web designer in Victoria to the top figure in the most vibrant software community in the world in just three years must be selling pretty well.
  4. The idea itself is not entirely new (and there might be some more recent examples). Regardless whether TJ Holowaychuk is a carefully crafted Node hype device, or indeed an actual sleep-deprived prodigy, his contribution to the Node.js community is enormous. For one, it is hard to imagine the amount of code produced in a desperate bid to match his productivity.

Yeah, so?

If history teaches us something, it’s this — given enough time, a cult following will emerge pretty much around anything that glitters in the dark:

Contemplating TJ’s towering achievement, one might get an idea that the art of programming can actually be mastered overnight. Computer science departments have outlived their purpose — anyone can, and probably just should, start doing everything in JavaScript and Node, and that is a clear path to one’s future career and recognition.

Everyone who is ready to embrace Node because of its perceived simplicity, should keep in mind that although all its glory comes to you MIT-licensed, Node platform is very far from being a freebie.

npm install azure

git commit -m “My first Node app”

git push azure master

And, oh, If you ever happen to drive through Victoria BC, could you please stop by and give TJ a hug.

Hello, 2015

A few months after the initial publication of this article on Quora and over 50k views, TJ Holowaychuk abruptly left the Node.js community. Golang is his new lightsaber of choice. As he doesn’t seem to care much about his JS legacy, everyone is welcome to claim ownership of his former projects.

Hello, 2018

Four years under the bridge. TJ is vocally against open source because it doesn’t pay the bills.

TJ embraced a happier life elsewhere.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store