POSTS

Questlove Describes Programming

Blog

On a recent episode of “Fresh Air,” Terry Gross interviewed Ahmir “Questlove” Thompson, the bandleader on Jimmy Fallon’s “Late Night” show and one of the driving forces behind one of the most protean hip-hop acts ever, The Roots. I really can’t say enough about how much I enjoyed the interview. One of the most interesting bits is how he described deejaying. I was struck by how similar it is to the way I hear other programmers describe coding:

Here’s Questlove on Deejaying:

I believe the number one rule of DJ is: You have to immerse yourself in music. Immerse. Not love music, you have to immerse yourself. [...] is: So for me it's like a chess game. I'm thinking about the payoff song that's going to be 20 songs from now and how can I build up to that moment. [...] the only time that I will be a complete ass to a person is when I'm deejaying. I absolutely want zero interruptions, because I'm in a trance and you're breaking my trance, and I need to know how to get from point A to point B. [...] I can go anywhere. [...] that world is my oyster and I need complete absolute concentration.

Let’s do a few search and replaces to make that quote describe programming, shall we?1

I believe the number one rule of programming is: You have to immerse yourself in code. Immerse. Not love code, you have to immerse yourself. [...] is: So for me it's like a chess game. I'm thinking about the payoff change that's going to be 20 changes from now and how can I build up to that moment. [...] the only time that I will be a complete ass to a person is when I'm programming. I absolutely want zero interruptions, because I'm in a trance and you're breaking my trance, and I need to know how to get from point A to point B. [...] I can go anywhere. [...] that world is my oyster and I need complete absolute concentration.

Seems pretty apt to the programming discipline, no? Ask anyone whose ever interrupted a programmer at the wrong moment whether they were treated by an “ass” and you’ll have a good intuition about the veracity of this transformation.

Bird of a Feather

This recalled to me another essay on programmers’ mental states while writing code, in particular Paul Graham’s essay: “Holding a Program in One’s Head:”

Said Paul Graham (Lisp Programmer, Entrepreneuer, Self-made millionaire, startup guru):

A good programmer working intensively on his own code can hold it in his mind the way a mathematician holds a problem he's working on. Mathematicians don't answer questions by working them out on paper the way schoolchildren are taught to. They do more in their heads: they try to understand a problem space well enough that they can walk around it the way you can walk around the memory of the house you grew up in. At its best programming is the same. You hold the whole program in your head, and you can manipulate it at will.

Let’s run Graham’s text through a filter and see if we can make something that holds for DJs:2:

A good DJ working intensively on his own set can hold it in his mind the way a mathematician holds a problem he's working on. Mathematicians don't answer questions by working them out on paper the way schoolchildren are taught to. They do more in their heads: they try to understand a problem space well enough that they can walk around it the way you can walk around the memory of the house you grew up in. At its best programming is the same. You hold the whole program in your head, and you can manipulate it at will.

I’d suspect Questlove would thumbs-up that observation.

I love that the discipline of programming, perhaps the most abstract of mental landscapes, meta-models so many other aspects of how other creative people experience their metier.

What I find even more fascinating about these quotes is that Questlove’s is so much like Graham’s, and Graham uses a house metaphor which rang many bells with me about spatial orientation and houses (especially since I had just read “Moonwalking with Einstein” and have been using the “memory palace” method to remember a vast number of programming details lately). Would it be any surprise to discover that Questlove built a house store his expansive collection of vinyl?

Questlove’s memory with respect to his collection and the songs’ beats is famously good. He tells Terry that he “would know the number of beats per minute on most of those 70,000 records ‘without a doubt’.”

Perhaps he’s (either intentionally or unintentionally) built a “memory record collection.” I’m pretty sure that if you asked for the BPM on track three of the Average White Band’s debut album, Questlove would probably think about his collection’s layout, “see” that record with its beautiful label that he watched spin3 countless hundreds of times and remember where he heard track three and then produce the answer. I’d love to ask him more about these metacognitive structures but I’m just some dude in San Francisco and he’s a musical innovator with mean drum chops – but if ever we wind up on the same layover I think we’d have a good chat.

In any case, there’s clearly something happening in common between these two disciplines: “programming” a set and programming an executable program; touring the “problem space” of BPMs and “feel” and touring the “problem space” of objects interacting with one another; storing arcana about who did the drums with Coltrane on the Blue Train sessions and storing arcana about the optional arguments one can pass to Object.new in Ruby. If Questlove finds that DJing, producing, or bandleading simply isn’t paying the bills anymore, I suspect he would be a fine programmer.

Footnotes

For those of you who speak regular expressions, I did it like this:

'<,'>s/deejaying/programming/
'<,'>s/music/code/g
'<,'>s/deejaying/programming/g
'<,'>s/song/change/g
'<,'>s/DJ/programming/g
'<,'>s/\v(programmer)/DJ/g
'<,'>s/code/set/g

This is recounted in his reflectinos on growing up in his memoir which bears