“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.
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 best 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. Consistent baby steps.
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, try to laugh at 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. Free 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. Free yourself of distractions: lock the door, turn off the phone, put on a pot of coffee, and dive in.
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 a sheet of 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. In my experience, many projects feel like this in the beginning.
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. Don’t feel bad about it.
14. Tackle what’s exciting.
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.
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.
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.
17. Level of difficulty.
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.
18. Healthy container.
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.
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. (It could be something as small as ten minutes of reading.)
20. Build foundations.
Foundations are a multiplier for your future skillset. 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.
“The silence between the notes creates the music.” ↩︎