A chalk figure sprawled on the floor reading books.
You'll be spending a lot of time studying. Get used to it.

In a moment, all of you readers are going to hate Matt Bird. I get it. I hate him too.

He’s a professional screenwriter who also wrote a great book about how to write. You’d think that might excuse him a bit, but no, I’m not letting him off the hook. Some crimes are unforgiveable. You’ll see.

Here’s what he says about how you master a skill:

“Writers have to be great at dialogue and plot twists and thematic metaphors, all at the same time. Great writing requires an almost ludicrous range of skills. And no matter how good you are at some of them, nobody is naturally good at all of them.

So you have to learn the skills you lack, sometimes from scratch. And since everybody has to learn different skills, then every skill has to be teachable. There are people who naturally write terrible dialogue but then teach themselves to write great dialogue. It happens all the time.

And once you feel you’ve finally mastered every skill, guess what happens? That one skill you had a natural talent for is now your weakest area, because you’ve been doing it instinctively rather than intentionally. Instinct isn’t reliable, but well-learned tools are. By the time you’re done, you jettison your ‘talents’ altogether, and you end up learning every skill, even if it means relearning the stuff you already knew.” (Matt Bird, Secrets of Story)

Is the hate burning within you yet?

This guy writes fiction all day. And, just as an a thrown-away aside while he’s off being entertaining, he defines the idea of mastery and what it takes to get there better than anywhere else I’ve ever seen. Most of the book is about how to keep your plot twists entertaining and your dialogue snappy.

Damn it, leave some deep thoughts for the rest of us, Matt!

Now that you hate Matt Bird properly, we may continue.

You presumably have something you want to be amazing at. I’m going to call it “writing software.” If your personal “writing software” is actually cooking or dancing ballet, that’s cool. But I teach people how to write software, so I’m going to refer to the skill you lust for, whether it’s cracking safes or contact juggling, as “writing software.”

Commitment is Hard

A chalk figure swings a tennis racket like a golf club toward a basketball on the ground.
If it feels right, assume you’re doing it wrong.

Matt also rubs our nose in the fact that committing to mastery is hard. He’s right, it is.

It’s not just that we have to get good at hard things. A lot of us actually enjoy that part. I know I do.

It’s that we have to learn how to stop doing the things we like well. And we probably have to stop liking them so much. I don’t have nearly as much fun with my “well-learned tool” skills as the ones I’m just naturally good at. I’m usually naturally good at them because I do it in a fun way.

And then I have to stop.

That sucks.

Death is Certain

An ancient computer, possibly some kind of Apple II
The human obsolescence curve is bad, but still better than for old computers.

It’s worse than that, of course.

If you’re going to re-learn everything in a discipline (not just writing,) you’re committing to a huge block of time, probably many years. You only have a few of those in your life. How many things do you get to be really master-level good at? Maybe four or five at most?

The sand is falling through your hourglass. And if you pick one of those… that leaves you what, maybe three more?

Certain death sucks too. What if I have five more things I want to be amazing at? Or ten?

My advice is to learn to really hate exercise, and to also learn to really hate kale and similar healthy foods. Ever notice how time slows down when you have to do things you really hate? You should exercise and eat healthy while utterly loathing both of those. Then you can use the extra subjective time to master writing software.

You Must Focus Intensely on Not Focusing Too Hard

A stick figure types at a keyboard as the sun goes up (or down) in the window behind.
You’ll see a lot of these, too. Do I mean sunrises or sunsets? YES.

It’s worse than that, too.

If you only work in an obvious way, only doing the obvious things, you won’t really get to mastery of writing software. You just won’t master it if you’re predictably doing paint-by-numbers.

Instead, you need perspective, and to take breaks, and to come back to your work and see where you’re doing it wrong. You need to come back fresh to the work in order to see where you’ve been screwing up but you didn’t notice. With a break, you can face your limitations and failings as both a writer of software and a human being.

Sounds like fun, doesn’t it?

This is where coaching and mentorship can help. Even if you can’t easily see what you suck at, somebody else is probably happy to point it out. For this reason, consider marriage. But in a professional context, somebody else can often bring a fresh perspective when you’re too close to the work.

Find people you want to be like. Ask them to look at the software you’re writing and how you’re writing it. If they refuse to criticise you, ask what they would do from here. Alternately, ask them how they’d grade the work if they had just produced it - many people who won’t criticise you harshly will criticise themselves as if they were heretics who had just called the pope a poo-poo head on an international news station.

A word of caution, though: if somebody is really good in a different way that you don’t want to be like, be careful asking them for feedback. A Haskell programmer sees the world in Haskell. A horror novelist is likely to give, um, mixed feedback on your My Little Pony fanfic. A traditional French chef may be horrified by even (or especially) the best pan-Asian fusion dish.

But How Do You Do It?

A calendar, drawn in chalk, with crumpled used pages below..

If this is all so hard, how do you do it?

First, know why you do it. It doesn’t need to be a perfect reason, but it should be one you’ll stick with. This is why so many middle-aged musicians who have clearly kept trying too long are the ones who got girlfriends by playing music. Even if the music is getting a little stale, having a girlfriend has not lost its charm (fair enough.)

Perhaps you’re writing code for the love of mastery. Or for the money. Or for the groupies (how did you get groupies?) But one way or another, you need to find something that’s worth it for you.

It’s helpful if whatever your reason is, you’ll get more of it by doing better at writing code.

Personally, I find that small children who want regular meals are wonderfully focusing to my mind. And children who want constant attention help me focus on code when they (briefly) stop. (I’m kidding, sort of. I do really love my kids.)

But whatever your purpose is, remind yourself of it. It’s what you have.