“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 intricacies, best practices, and alien-looking examples. However, you don’t need formal education to learn how to program. You just need to wrap your head around a few things:
1. Follow your interests.
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.
2. Realize how many solutions exist.
There are many, many ways to solve a single problem. You get to choose your path forward. Some of them are better, but none of them are actually wrong.
3. Perfectionism kills projects.
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.
4. Build something you can use.
If you aren’t using your skills to build something, you’ll give up. Teach yourself to code while building a super-small project: a todo list, a blog, a timer… Whatever sounds interesting to you.
5. Stay uncomfortable.
Stretch your abilities – once you learn the basics, push yourself a bit further. This is how you build new skills.
6. One foot in front of the other.
You don’t need to have a fancy degree to learn how to code. You just need to take a small step forward every day.
7. Frustrated? Don’t quit.
If you become frustrated, take a deep breath, think of something funny, and keep working.
8. Angry? Take a break.
But if you become angry, take a break.
9. Breakthroughs come at weird times.
Your best breakthroughs won’t come while you’re working. They’ll come when you’re cooking, driving, or doing something completely irrelevant1.
10. Clear your mind.
Carpenters use their hands; programmers use their minds. If a carpenter’s hands were broken, 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.
11. Buy a notepad.
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 grid paper nearby when he’s working on his projects.
12. Everything is held together by gum.
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.
13. Everyone’s clueless at some point.
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 (he made Google). Don’t feel bad about it.
14. Tackle what’s exciting.
If you work on what’s exciting, you’ll focus more and learn faster. Even the smallest projects can turn out to be enormous learning experiences.
15. Comment to understand.
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.
16. Code fairies visit at night.
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.
17. You’re not stupid.
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. Everyone goes through this. The only thing that separates the best from the others is that the best don’t give up.
18. Take care of yourself.
Your physical state affects your mental state. I write better code when I’m well-rested. I can focus better if I lift, eat right, and meditate.
19. Daily progress.
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.2
20. Build foundations.
Foundations are a multiplier for your future skillset. Sometimes, you have to take a few steps back (learning, practicing) to take a giant leap forward (building impressive applications). There are no shortcuts.