“When I write, I feel like an armless, legless man with a crayon in his mouth.”
― Kurt Vonnegut
Programming can feel the same way – especially for beginners.
It’s hard to wrap your head around a complex new world filled with its own intricacies. It feels weird to count from zero or break things into miniscule steps so the computer knows how to handle a variable.
It is not possible to learn programming unless you welcome the challenge of understanding its world. However, it’s entirely possible for anyone to do it with practice and patience. What’s more, it can be incredibly fun.
Your persistence is all that matters. So without further ado, I give to you, beloved reader, a list of twenty things that can help you in your journey to become The Best Developer There Ever Was:
Your curiosity will always be rewarded. Follow the things that interest you, even if you’re in over your head; you’ll learn faster this way.
There are many, many ways to solve a single problem. You get to choose your path forward.
When you’re almost done writing code to solve a problem, you’ll realize that there’s a much more efficient solution if you just go back and rewrite everything. You should usually ignore this feeling unless you know, in your gut, that revisions are necessary.
Walk onto the limbs of your current abilities. This is how you build skills. Have fun with it. Invite uncertainty to the table and dine with it. It’s often an interesting guest.
If you become frustrated, take a deep breath, try to laugh, and keep working.
But if you become angry, take a break.
Your best breakthroughs won’t come while you’re working. They’ll come when you’re cooking, driving, or doing something completely irrelevant. “The silence between the notes creates the music.”
Carpenters use their hands; programmers use their minds. If a carpenter was holding two cups of coffee, they couldn’t do their job; likewise, if a programmer’s mind is jumbled and focused on other tasks, they won’t be able to do their work. Free yourself of distractions: lock the door, turn off the phone, put on a pot of coffee, and dive in.
Have a pencil and paper right next to you. When you encounter a problem, try drawing out a solution before you tackle it with code. My college roommate was a computer science major and loved using a miniature whiteboard to do his work; another programmer, Markus “Notch” Persson (the creator of Minecraft), keeps a sheet of grid paper nearby when he’s working on his projects.
I once heard that even the world’s best developers sometimes feel as though their projects are put together with the digital equivalent of chewing gum and coat hangers. It’s okay to feel this way.
While learning to code, you’ll spend the majority of your time browsing the web for answers to your questions. Everyone has to do this – even Larry Page. Don’t feel bad about it.
Build stuff that sounds exciting to you. Build simple solutions to your problems. Even the smallest projects can turn out to be enormous learning experiences.
In the beginning, you probably won’t be able to get through 5 lines of code without a comment. Mark up the code – every line if you need to – with clear comments in plain English. Walk yourself through the code, line by line, to understand what it’s doing. You’ll get better as you continue learning.
Things may “click” while you’re sleeping. Don’t be surprised if you’re stumped with a problem, you go to bed, then you wake up with the answer the next day.
Even with several languages under your belt, coding will continue to be difficult. This is natural. You might beat yourself up for not understanding “supposedly simple” concepts instantly. Don’t do this – everyone has to go through this at some point. The only thing that separates the best from the others is that the best don’t give up.
Your physical state affects your mental state. I have clearer thoughts after exercising, making a clean and comfortable space, and eating and drinking right for the day. Adopt a healthier lifestyle, and you’ll think better.
Make progress every day, no matter what. Even if I’m spending the day with family, I’ll still find several minutes where I can learn something. Taking action every day helps you build momentum, compound your efforts over time, and achieve more than those who take days off. (It could be something as small as a ten minute reading break while you’re in the bathroom.)
Foundations are a multiplier for your future. There are no shortcuts. Stop doing research on “the best programming language/framework for beginners” and dive into understanding the underlying concepts of computers with something like Harvard’s CS50 (free). This path may take longer, but you’ll eventually be unstoppable.