I wanted to be extraordinary.
If I could have chosen at 15 what to be extraordinary at, I probably would have picked science. I liked science. I was pretty good at it, too, but not extraordinary.
I had bought into that idea that talent is some sort of genetic boolean. You either have it, or you don't. You're born with it, or you're not. And I, apparently, was not. At 15 I had not shown a single glimmer of extraordinary talent in anything, and because scientists do their best work when they're young, and I was already 15, I figured it was probably too late.
So I pivoted.
For years I tried to ferret out my innate talent.
I was going to be a potter. I was an apprentice potter. For about a week. Then I was an apprentice artisan woodworker for maybe 6 months, and then I was like screw this, I'm going to high school. Of performing arts. After 3 years on the tenor saxophone it was obvious that I wasn't cut out to be a jazz musician. I was pretty good at composing stuff, like baroque choral music, so I prepared an application for a college of musical composition for film. Before I even sent off the application I tried out for a theatre school, and after a week of auditions I was, inexplicably, accepted as a student. After a year, I could tell you with certainty that theatre was not my talent. Neither was ballet. Or fencing. Or contemporary French circus.
I tried a lot of things. And not half-heartedly, either. I worked really hard, but whenever something was difficult there was this voice that reasoned, "It must not be my talent," because had it been my gift, it would have come naturally. QED.
I believed in the genetic explanation of greatness. I thought you just needed to stumble across that accidental match, to find the lock for which you are the key.
Inevitably, by aiming in every possible direction at once hoping to hit a target, I wandered blindly into a low-paying job where the only requirement was that you could type 80 wpm.
I woke up on my 25th birthday thinking, "Fuck! A quarter century? I'm a washed up evolutionary dead-end in a backwater dead-end life."
I performed a reality check and came to the conclusion that even if I couldn't be a great scientist, I could still probably be a top-tier mediocre scientist. All I needed was a university degree in something scientific.
Having majored in saxophone in high school there were remedial credits involved. I began to teach myself math, physics, and chemistry.
Since I knew I wasn't talented, I didn't expect it to be easy -- I expected to suck. I simply started at the beginning and did one thing at a time, by the book, until I learned it, and then moved on.
Whenever I panicked, I'd remind myself that this is not rocket science. It's basic math. If I don't understand it, I must just have skipped a step. So I'd slow down and do some research and sure enough, within a few hours or days I'd be right back on track, cheerfully slogging.
I found that I was balancing on a continuum, and that there was a sweet spot, and that sweet spot had nothing to do with math or physics.
It works like this:
You're asked to perform a particular saxophone tune at 88 beats per minute. This falls within your capabilities, so you can perform the task effortlessly, confidently. While you're doing so, you can think about other things, for example how to adjust your attack based on what the drummer is doing. You can react to something that happens in the audience without fumbling or losing your place.
Now you are asked to play that same tune at 105 beats per minute, and you can do this, but it requires every bit of concentration that you can muster. Your skill level is perfectly balanced by the challenge. The difficulty of the exercise is barely met by your ability. You're being stretched. Being stretched is painful. Remaining at that place, that painful place that stretches you, requires a monumental effort. It's exhausting. It's hard. It's not fun. It is also satisfying. Empowering. Deeply rewarding.
When you're asked to play that saxophone tune at 120 beats per minute you panic. You simply cannot do it. The challenge has no counterpart whatsoever in your skill. You flail. Your executive function shuts down, and your output becomes erratic. It's terrifying.
This continuum is a measure of how effortlessly you can perform a given task.
At one end of the continuum, you have your comfort zone where you perform effortlessly. You don't level up in your comfort zone, because you're doing stuff you already know how to do. At the other end of the scale you have your panic zone, where you don't level up, because you're busy freaking out. Between the two there is a space where your ability and the challenge barely overlap. This is where you level up.
I'm not saying you should never be in your comfort zone or panic zone. Not at all. Your comfort zone is where skills become reflexive, and you have the capacity to handle higher-level thinking. You should absolutely spend time there, especially when you need to be productive.
Your panic zone is an excellent place to experiment, to play, and to find your boundaries, because as long as you don't need to be delivering value, that fear can be transformed into thrill and discovery. You should absolutely spend time there, but not when people are paying you money.
In other words, you should spend time in your comfort zone and your panic zone, you just shouldn't try to *learn stuff* there.
I spent months working through math and physics problems, and during that time I learned as much about practice as I did about calculus and mechanics.
Practice is a strange beast. It's not play. It's not intended to be fun. It's also not work. It's not intended to produce anything. Practice is a thing entirely unto itself.
What many people commonly think of as practice is futzing around kind of doing stuff that seems relevant to what you think you might want to kind of get better at.
This sometimes kind of works.
For practice to be truly effective, it should be focused and deliberate.
The most basic form of practice is the drill. A good drill boils down to three elements: focus, repetition, and continuous feedback.
A drill takes an activity and warps it until you are focusing on a narrow slice of that skill in a way that is repeatable, and provides immediate and continuous feedback.
How narrow a slice depends on your capability. If you’re in your comfort zone, you need to ratchet up that drill a notch. If you're in your panic zone, your adaptations will be random and accidental and you will find yourself practicing doing it wrong a lot more than you'll practice doing it right.
Practice doesn't make perfect, it makes permanent. If you're practicing in your panic zone, you'll end up being permanently wrong. You want to find that sweet spot, the space where your ability and the challenge barely overlap.
So: choose one thing that you can kind of almost do. Deliberately warp it to focus on a specific aspect of that skill, make it repeatable so you can do it over and over and over, and then make the feedback loop as short as possible. Then go do it.
Then take a nap.
Not all focused and deliberate practice activities are drills.
Take simulations, for example.
In sports, you have scrimmages. In therapy, it's called role play. In programming, we do weekend projects and hackfests and code retreats.
In simulations you improvise as though it were the real thing. If you make a mistake, nobody dies. You don't lose. You don't fail. You also don't stop and immediately go back and do it over correctly. That's what drills are for. In a simulation you keep going.
Simulations don't warp activities, they intensify them. You create opportunities. You provide a more concentrated learning experience by putting together unlikely combinations of implausible occurrences.
Another interesting type of practice is the case study.
Athletes watch videos of their practice sessions and performances. Chess players study games played by grand masters and try to determine what the next move would be, and then when they're wrong, they analyse why.
In programming, reading code is a case study: What were they thinking? What pressures made them choose this approach? What are the trade-offs?
Case studies are about observation, analysis, and critical thinking.
Then there's direct practice, the precise notes and perfect pauses of a violinist playing a concert piece while nobody's listening.
Direct practice, when done deliberately and with focus, hones clockwork precision, making it reflexive. When you're free to shift your attention away from the mechanics of your performance you can focus all your creativity on the subtle details that lift your performance from the mundane to the exquisite.
We tend to associate direct practice with musicians, but it is just as much the domain of stand-up comedians, trial lawyers, and contemporary French circus acrobats.
And then there is imitation: overlooked, and undervalued.
As a beginner, you don't know what you don't know. Imitating masters will teach you things that you don’t know you need to know, and often things that the masters themselves are unable to articulate.
Our culture hypes individuality and creative self-expression, but it's difficult to be creative without having internalized a vast store of techniques, licks, and idioms.
Don't be a snowflake. Go copy someone who knows what they're doing.
No matter what type of practice you're doing, no matter how good you are, practice is gruelling.
Drills, simulations, case studies, direct practice, and imitation, these are all ways of stretching you to the edge of your ability. It's equally difficult for experts as it is beginners. That said, practice is particularly challenging when you're grossly incompetent. Not because you suck per se, but because feeling stupid is so powerfully unpleasant. This is one of the important drivers behind procrastination. When you're feeling overwhelmed by your own ineptitude it's easy to become fatalistic.
Another disadvantage to being a beginner is that many practice activities lack inherent feedback. When you're vastly unskilled, your judgement is completely unreliable. Everything, including the right thing, feels wrong. It's very easy to consistently make the wrong adjustments, leaving you with deeply ingrained bad habits.
It took me 18 months to pass all of the prerequisite exams, and then I was ready to apply to University.
I was accepted to two study programs: One in Aerospace Engineering, and another in Molecular Biology. When people around me realised that I was serious about this university thing, I got a bit of push-back. They were like: Holy crap, you're going to be, like, 32 by the time you finish.
If we're going to be realistic about it, though, I was going to be 32 anyway.
I picked Molecular Biology.
University was completely uneventful. I wrote papers, I did lab work, I read books, and I took exams. It changed my life. Not so much because of the papers and exams, but because I was practicing, I was learning, and I was introduced to the bash prompt.
Before university, I had occasionally experienced flow, mostly when solving truss problems in mechanics. Telling the computer what to do was… like truss problems. Except better.
I kept coming back to and exploring programming. Exploring, not learning. Learning is what I did with math and physics. That was a steady, tedious, rewarding diet of deliberate and focused practice. It took me quite a long time to transition from exploring to learning programming. Even when I did make the transition, it was hit-or-miss. The resources I found were confusing or outdated, or just hopelessly advanced.
After 3 years I had a Bachelor's degree in Molecular Biology, some basic ability to write control structures, and far more importantly, I had come to accept that talent is not boolean. It's *not* some innate genetic trait that you have to go look for and may or may not find.
The truth is: talent is bullshit.
Skill can be developed systematically. A SYSTEM is *awesome*. A system, you can understand. A system you can HACK.
The technical term for levelling up is called skill acquisition.
A couple of researchers, a pair of brothers by the name of Dreyfus, created a model of how skill development works. The scale goes like this:
When we are novices we can be in one of two states. The first is mindless obedience. The second is overwhelmed. As a novice we're in the unenviable position of being only millimetres away from our panic zone at all times. If a rule is unclear, we're stuck. If we accidentally skip a step, we're stuck. If a result deviates even slightly from what we expected, we're stuck. We have no frame of reference.
When we're advanced beginners we see one thousand disconnected details, and give each of these details equal consideration. There's no cohesion. We're unable to distinguish between relevant, irrelevant, and incidental. We can look things up, but we can't troubleshoot.
When we're competent, we gain the ability to evaluate relevance within a context. We also gain the ability to follow routine procedures and do basic troubleshooting. Here, we can actually be productive without having to step outside of our comfort zone, which is probably why so many people stagnate at this skill level indefinitely.
When we're proficient we can make much finer discriminations. We're able to evaluate the significance of subtle indicators. We look further ahead. We make predictions. We prognosticate. We recognise underlying patterns. We're able to apply overarching principles. All the intricacies of the subject-matter come together in a vast and fascinating web.
When we're experts we see a thousand details, and immediately disregard 999 of them. We focus in on the one that matters. How do we do it? No idea. We don't know how we know what we know. Some people talk about instinct or intuition, as though it's some sort of super-power, but it's not magical. It's powerful processing that happens very, very quickly. It's based on a gargantuan store of knowledge and experience.
Described in this way, skill development sounds so sequential and regular and inevitable, levelling up in a series of climaxes. Win after win after win, as though life were a television commercial.
This is a scientific model. A model is like a UML diagram for science: it's a simplification about the world, a useful lie that you tell yourself in order to navigate a messy reality. Sequential? Sure. Regular? Hardly. Inevitable? We should be so lucky.
Life is messy. Levelling up happens in spurts and sudden surges, and there are plateaus. A lot of people seem to dread the plateaus, doing their best to hurry past them, always with an eye on the goal. Am I there yet? Am I done yet? Am I good yet?
Plateaus are neurologically important, the way sleep is neurologically important. They're injecting time into your practice, allowing complex skills to become deeply embedded.
Plateaus are where your skill is being refactored so you can scale. If you are in a rush, you will end up with brittle and fragile skill.
Focus on what you're doing, not how you're doing.
There's a saying: "Amateurs practice until they get it right. Professionals practice until they can't get it wrong." That's what the plateaus are about. They put the "level" in "level up."
I used my university degree exactly once, for the first real programming job I got. The CTO of a startup looked at my resume and said: "Huh. A degree in Molecular Biology and Biological Chemistry. You must be pretty smart." And she gave me a job.
It was the culmination of a lot of hard work and practice, and the start of a lot more hard work and practice.
I thought I wanted to be extraordinary, but what I really craved was passion, and that deep sense of satisfaction that comes with focus and accomplishment.
Mastery isn't about perfection.
Skill grows by focusing intently on the things that stretch you. Passion grows by giving something your full attention long enough to gain depth and understand nuances.
Talent is bullshit. Skill is cultivated. Passion is curated.
Hacking skill *is* hacking passion.
Don't do what you love. Do something well enough to love what you do.
This is the transcript of my Hacking Passion conference talk presented at Nordic Ruby and LoneStar Ruby Conference in June/July 2013.