What Neil Gaiman Can Teach You About Learning to Code
Lessons from the “Make Good Art speech”
Neil Gaiman is one of my heroes. He’s not only a great writer but also an avid learner and teacher. In his Make Good Art commencement speech, he shared the best tips on creating art with the University of the Arts graduating class. And even though it was advice for creators, you can learn so much from it as an aspiring programmer.
Here are the five most important lessons from this speech.
When you start off, you have to deal with the problems of failure. You need to be thickskinned, to learn that not every project will survive.
Failure is inevitable. At the beginning of your programming journey, you have no idea what’s ahead. The sheer number of programming languages and tools is overwhelming. You’re going to try many new things, which means you will fail a lot.
When I was learning to code, I failed in every possible way. I failed to pick the right tools and spent almost six months learning the things I didn’t decide to pursue. Once I failed recruitment tests because I couldn’t understand tasks. Another time I had such a horrible trial day at a company that I prayed for them not to call me with feedback. It was humiliating. On top of that, there were everyday failures — my code didn’t work even though I supposedly did everything right.
All of this seems horrifying, but it ended very well for me. I found my first job, gained confidence, and eventually started my own company.
Setbacks are inevitable, but the way we approach them and keep learning makes the difference between ultimate failure and success.
A freelance life, a life in the arts, is sometimes like putting messages in bottles, on a desert island, and hoping that someone will find one of your bottles and open it and read it, and put something in a bottle that will wash its way back to you.
Finding the first job or client is difficult. When I was applying for my first job, one of the companies incidentally sent an email to all candidates for one junior front-end developer position. There were about 130 of us—one hundred thirty people for one position.
This means you’ll be rejected many times. It’s hard to stand out amongst hundreds of people, especially if you used these same learning resources or attended these same bootcamps. But there’s a silver lining. You can be rejected multiple times, but you need to be accepted only once.
Your goal is to persuade only one company you can bring some value. So be persistent, hone your skills, improve your portfolio and apply. Sooner or later, someone will respond to your letter in a bottle.
I hope you’ll make mistakes. If you’re making mistakes, it means you’re out there doing something.
You’re already ahead of 99% of your competition by learning every day. And while it may feel hard and overwhelming, that’s the only way to learn new things. Programming is complex, but so are all things worth aspiring to. If it were easy, everyone would do it, salaries would be much lower, and it wouldn’t make much sense to learn it.
Obstacles are part of the process. As long as you encounter new ways to fail and discover new problems, you’re making progress. If it feels easy, you should start worrying if you’re challenging yourself enough.
The secret to surviving your mistakes and failures is not to be too hard on yourself. Embrace it and recognize it’s an essential part of the process. You can grow only if you extend your limits. Make the failure your friend.
Something that worked for me was imagining that where I wanted to be (…) was a mountain. A distant mountain. My goal. And I knew that as long as I kept walking towards the mountain I would be all right.
Deciding what to do next is one of the most challenging parts of learning to code. The software development world is vast, and you can do whatever you want, be it front-end development, artificial intelligence, or cloud computing. The multitude of options can result in analysis paralysis or trying to learn everything simultaneously. Unfortunately, it’s a recipe for failure and burnout.
To learn to code, you must first learn to say “no” to things. Laser focus your attention on your goal and resign from everything else. If your dream is to become a Python engineer, don’t learn Kotlin because someone on the Internet said it’s a perfect language. If you want to become a front-end developer, don’t learn three frameworks at once — pick one and stick to it. Don’t let anyone's opinions draw you away from the mountain.
It will often be tricky; you’ll want to learn “the next big thing” or something that helped your friend get a job. Resist the temptation, pick your path carefully and stick to it. It’s the best way to succeed in this industry.
I worried about the next deadline, the next idea, the next story. There wasn’t a moment for the next fourteen or fifteen years that I wasn’t writing something in my head, or wondering about it. And I didn’t stop and look around and go, this is really fun.
Enjoy the ride. Coding can be fun and fulfilling work if you don’t treat it as a chore only. What is the best way to stay motivated in the face of adversity? By having fun!
Take a break from your task and find some joy in programming. You can solve algorithmic puzzles, take a look at creative coding, or create some silly app — whatever makes you smile.
Remember this is going to be your career. Pick your specialty not only based on the market needs but also on what’s interesting for you. You need to have a good time and find something that sparks your curiosity, so look for opportunities to enjoy yourself.
Did you find this article valuable?
Support Szymon Adamiak by becoming a sponsor. Any amount is appreciated!