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.
Admit the fact.
And now for some conspiracy theory:
- 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.
- 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.
- 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).
- 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.
- 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.
- 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’);
- 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’);
- Use blame if you still don’t believe that both were committed by the same person. Hmm.
- 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.
- 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.
- 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.
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:
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.
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.
Four years under the bridge. TJ is vocally against open source because it doesn’t pay the bills.
TJ embraced a happier life elsewhere.