In Part One of our series, I told you about how I came to teach myself programming. In Part Two I detailed exactly how I did it. In this final installment of our 3-part series on teaching yourself to code, I’d like to share some lessons that I’ve learned on my programming journey. Hopefully they can help you learn just a little faster than I did!
1. Get a Plan Stan
I did a few basic Google searches, browsed some sites, and came up with a basic game plan for myself. Stack Overflow was a great resource, but be careful with it. Like I said in my previous post, the programming community can sometimes be a little overbearing and nit-picky. Worry about first being able to write Hello World in Ruby before you start to fret about knowing Test Driven Development and Git.
2. You’re going to be (really) bad, that’s OK!
A common scenario when you’re first learning programming is doing a tutorial, feeling really confident, and then struggling mightily when you try to do it on your own. This is because programming isn’t simply memorization of syntax, it is a new way of thinking, and training your brain to think differently as an adult is hard! (old dogs and new tricks comes to mind). Odds are, unless you’ve had some extensive experience with logical problem solving as a kid, you’ll struggle to grasp programming concepts at first. But, just stick to it, don’t get discouraged, and things will get better as you keep practicing.
3. USE (good) BOOKS!!
I started by trying to learn through tutorials, but that ended up giving me a scattered understanding of concepts without a true knowledge of what I was doing.
I know it sounds counterintuitive to learn programming from a textbook, but I found out very quickly that you simply can’t beat the structured approach of a good book.
Be careful what books you choose. Programming textbooks are infamous for having structured, detailed introductions, and then dropping you off a cliff. I cant speak highly enough for the Head First Series, especially for someone who hasn’t been exposed to programming culture before.
4. Stack Overflow can be your best friend (and your worst enemy)
I’ve spoken about Stack Overflow before, and inevitably within the first few days of your programming journey you’ll find it as well. It is a great resource, and the fact that you can Google a problem you’re having and find a quick solution is amazing. However, you’ll inevitably be tempted to copy+paste solutions into your code, without trying to figure out how it works. Try your best not to do this. Instead, try to dissect the code to figure out exactly what you’re doing.
5. Best practices are best, except when they’re not
Best practices in programming typically refer to the “best” way to do things. Surprising, right? Usually, you should do your best to stick to these. But don’t let them get in the way of the most important thing – writing code.
Even the best programmers tend to write “hacky” code sometimes. The important thing is to realize that this probably isn’t the best way to do things, and make a mental note that it could be done better.
All the code you write for the first few months is going to be horrible anyway, does it really matter if it is indented properly?
6. Consistency, Consistency, Consistency!
Generally, the older you are, the harder it is going to be to learn programming. You have to train your brain to think a different way than it ever has before. If you’ve been exposed to logical thinking and problem solving your life will be easier, but if your primary interest has been 18th English Literature and you suddenly want to pick up Ruby on Rails, it will be difficult because you have to learn a new way to think. The number one thing you can do is be consistent. Set a goal for yourself to program every day, for just one hour a day. A great example of this is Jennifer Dewalt, who made 180 websites in 180 days.
7. Persistence, Persistence, Persistence!
One of the things I’ve seen people have the most trouble with is sticking to things when it gets tough. During your first few months you are going to struggle mightily. Get over it, and move on. You’ll struggle and spend 8 hours on a task that would take an experienced programmer 5 minutes. That’s fine! You will get better (as long as you stick to point #3).
8. Embrace your inner hipster – take a break and get some coffee!
When you’re really focused on a problem that you can’t solve, oftentimes you’ll find that the solution is staring you right in the face. You’ll quickly run into the frustrating situation where you were up late one night programming, couldn’t find an answer to a program, and gave up and went to bed. When you wake up in the morning you’ll solve that problem in 5 minutes, guaranteed. Learn when to take a step back and take a break, you’ll often be more efficient in the long run.
9. Make new friends!
A programmer friend is invaluable to a new initiate such as yourself. Being able to text a friend with a specific question and getting an answer in 5 minutes, as opposed to combing through snarky Stack Overflow comments for 2 hours is an incredible resource to have. If you know programmers, ask them for help! Be nice and buy them some beer (programmers love beer) in exchange for helping you with some basic problems you’ll run into.
10. Have a Goal
There isn’t a single programmer in the world who learned programming by sitting in front of a computer and saying, “I’m gonna PROGRAM!”
Programming is like being an athlete. An Olympic distance runner doesn’t just put on their shoes and run 15 miles every day just for the sake of running. Instead, they are running with a specific goal in mind, to compete and win a medal at the Olympics.
Athletes want to be the best at their sport. Programmers want to build amazing PROGRAMS! Once you have a basic understanding of programming, find a cool app you’d like to build and go for it. That’s always the best way to learn. I’ve always learned more about programming when I had something I wanted to build than when I sat down and said “I’m gonna learn about X.” That is the best advice I could ever give you.
Want to read the rest of the How I Taught Myself to Code Series?