5 Things I Wish I Knew Before I Started Coding

I remember quite vividly the first time I opened Notepad and typed out some HTML to create my first website. I was 16 and our local ISP was giving away free "webspaces", so I figured why not. A few years later I had put those same skills to use as a front-end developer, but I was never able to wrap my head around back-end code. Something about it seemed so out of reach. The characters just seemed like Japanese, and the experience was always so daunting that I never really took the next step forward in my education as a web developer.

Thankfully today there are literally hundreds of ways you can learn to be a web developer online, in much easier ways than we had back then (eg. reading a physical book... The Humanity!).

Adventure Time same paragraph

But here's the deal... Most of those websites, in their attempts to circumvent that god damned reading I didn't want to do, ultimately just falsely rewarded me for not doing the real work that my brain needed to truly think like a programmer. Enter lesson 1.

1. If A Site Makes It Look Easy... Run Away

No seriously. When you use a site like CodeCademy (which by the way is a great site / resource), you will learn some fundamentals of web languages like HTML and Javascript; however, you won't be challenged to think about how to apply the lessons. There are challenges, however, you're performing them within the comfort of a carefully crafted, safe sandbox. Nothing can go wrong. Which is great, but without the fear of the unknown, your brain will just trick you into thinking that you're learning, when in fact, you're just typing out the right sequence of code to get to the next task.

Once you actually have to apply these skills, you feel paralyzed and don't know where to start, because you've been given everything on a silver spoon. When you should probably have just been thrown into the deep end.

2. It's Faster To Do Things The Hard Way

This is by no means a pitch for Zed Shaw, but that guy's smart. He currently has three different programs:
Learn Python the Hard Way Learn Ruby the Hard Way Learn C the Hard Way

I've done all three of these, and I learned more about programming in just a few weeks, than I did from years of playing around with sites like CodeCademy and Code School. Why? Because he forces you to use your brain. To look things up on your own, and to exercise that muscle that helps you look for solutions on your own, rather than have the answers hand fed to you.

I also strongly recommend Javascript Is Sexy. It's the equivalent of Zed Shaw's program, but covers most of the JS universe... Which is massive.

3. You Need to Be Willing To Break Stuff

I remember when I was about 12, I randomly typed a command into the DOS prompt of our family computer, and reformatted everything. We lost everything. That was ok though, my parents were more impressed by the fact that I was playing around with shell commands, than the fact that they lost some personal information (this was the 90's, we basically just played solitaire and surfed AOL, no financial information was lost).
Learning how to reinstall a computer was a huge life lesson for me then, and today, it's learning how to fix a broken shell script or figuring out why my Python install is throwing off 25 different errors.
Today, I keep everything important backed up on Dropbox. In a worst case scenario that I do something really bad, I can always reformat. Solitaire is easy to reinstall. Ultimately you learn to use Google to ask better questions, and get comfortable with being uncomfortable.

4. It's Important To Have Problems To Solve

Learning to code for the sake of learning is pretty useless. Computers were created to automate difficult tasks. Not to prove that we can decipher languages that seem like Japanese.

Ultimately, any language you learn is going to plateau at a certain point unless you have a clear vision of what you want to create. For example, if you want to build a mobile app that sends messages to your friends, you can focus on learning how mobile apps need to be structured, and then learning about messaging protocols. Just learning C# (what most iPhone apps are written in) will leave you feeling aimless.
Having a goal in mind allows you to do proper research into which areas you want to learn, and gives you a sense of purpose... Which leads into number 5.

5. It's Important To Have Solvable Problems

I love shows like Halt & Catch Fire and Silicon Valley. There's something about the idea of staying up all night to solve a massive problem that gives me the warm and fuzzies, BUT, I wasn't ready for that. At least not the epic problem solving we see happen on TV. When you're getting started, it's the things that seem really small, that become huge wins early on.
When I started learning Python so that I could be better at data visualization, I assumed that my big challenge would be connecting to the Twitter API to then spit something out to a Javascript framework... But I found out that I needed to solve smaller problems first, like reading in CSV files, or plotting a bar chart.
Now that I've gone through those challenges, the true difficulty is simply in figuring out what all those little solvable problems are that lead up to that bigger project.