Advice from Neil Gaiman, for Prospective Programmers
I wanted to be a writer. I wanted put words to page and bring worlds into being, filling them with characters whose stories would make people laugh, cry, grimace, and grow. I wanted to say something about the human condition, my generation, injustice, or some other high-minded notion.
I learned to code instead.
It doesn’t mean I’ve stopped trying to be a writer. We’re all becoming until we become or we’re dead, and I’m not dead yet.
When I was younger I used to scour bookstores and the Internet for tips on how to become a professional author. If you’re looking for a good business idea, take a profession that requires persistence/hard-won skill to succeed and sell various forms of media telling people “everything” they need to know to make it in that profession. If you want a great business idea, do the same thing but don’t mention the persistence and hard-won skill.
I could have saved myself some time and money if I had found Neil Gaiman’s work a little earlier in life. He offers the best advice to authors I’ve ever found and to my knowledge he’s never charged a dime for it:
When people come to me and say, ‘I want to be a writer. What should I do?’, I say, ‘You have to write.’ And sometimes they say, ‘I’m already doing that. What else should I do?’ I say, ‘You have to finish things.’ Because that’s where you learn from; you learn by finishing things.
That’s it, folks. Simple, straightforward, and true. And yet I suspect many of the people that approach Mr. Gaiman walk away from their conversation disappointed. He’s given them advice that will save them hundreds of dollars in seminar fees, instructional videos, and books, but I’m not sure they’ll thank him for it.
There’s no shortcut to becoming a better writer, much less a great one. You have to write and, as Mr. Gaiman observes, you have to finish. It isn’t enough to write simple character sketches or scattered scenes that never quite become that novel you’re writing. There is something you learn from finishing a piece—from listening to it, discovering it, figuring out what works and what doesn’t—that you learn no other way. Mastering that process is what makes you a writer.
But I thought this was about programming.
I program for many of the same reasons that I write. I love the expressive power of code. Like some Fae magic, computer programming allows me to translate imagination into reality. It’s my own, self-absorbed pursuit of apotheosis, but hey…everybody’s got their thing.
Programming as a craft shares much in common with writing. And here’s where I think Mr. Gaiman has something to offer people who want to become programmers:
Code. Finish Projects. Keep Coding.
You can spend hours on Quora and never find better advice.
Of course this leads to other questions. Where do I start? Which language should I learn first? What if I choose wrong? Maybe I should consider GitHub commits? Or maybe employment statistics would be a better indicator?
Irrespective of the language, we learn to be programmers by writing code. We learn to be better programmers by building complete applications. If you’re just starting out, don’t worry too much about your choice of language. Find one that appeals to you and lends itself to solving problems you care about. If you want to build web pages, start by learning HTML. Pull together some ideas for a page you’d like to build and get to work. Don’t worry if you’re not sure how to add an image or display a table of information; discovering what you don’t know is part of the process.
And get comfortable with the fact your first efforts are going to be rubbish. Like writing, you learn what works and what doesn’t by finishing. When I first started learning object-oriented programming back in college I was constantly painting myself into corners by naive design decisions. I’d usually realize it during a late night coding session with a project deadline looming. There was nothing to do but make it work, leading to some really ugly, spaghetti code. Those missteps helped me grow as a programmer, and they were the type of learning opportunities that don’t arise when you’re working your way through simple coding exercises.
Even now I sometimes have trouble getting started with a new project because I’m so caught up in trying to figure out how it’s all going to come together. It’s a bit like writer’s block, and I think it’s easy for programmers—new and old—to put off getting started while they worry over the Big Picture. Here again, Mr Gaiman has some advice:
For me, it’s always been a process of trying to convince myself that what I’m doing in a first draft isn’t important.
One way you get through the wall is by convincing yourself that it doesn’t matter. No one is ever going to see your first draft. Nobody cares about your first draft. And that’s the thing that you may be agonizing over, but honestly, whatever you’re doing can be fixed. …
For now, just get the words out. Get the story down however you can get it down, then fix it.
Whatever you’re doing can be fixed. For now, just code. Finish projects. Keep coding.