How I Taught Myself to Code: Avoiding the Cliff

In the first part of this series I told you about my introduction into the world of programming.  Now, I will give you a step-by-step account of exactly what I did to learn!

Where Do I Start?

You can start learning with CSS, but it is not programming in the strictest sense

The first thing I did was tackle HTML and CSS.  I want to be very clear on this point, this is NOT programming.  Coding is a mindset, you need to be able to problem solve and think logically.  There is very little (if any) of this with HTML and CSS.  Now, that is not to say these aren’t valuable skills to have, but don’t fall into the trap of “learning to code” by writing some basic HTML.  Some experienced programmers may roll their eyes at you and tell you that you’ve still got a long way to go.

Choosing A Language

With the exception of HTML and CSS, the language you choose to learn doesn’t matter!  I spent more time learning what a “for” loop was when I first started programming than I did learning Ruby after I had 2 years of experience under my belt.

The most important thing with programming is to start making progress and begin learning.

The language you first choose does not matter

One of the biggest mistakes I see in people trying to teach themselves programming is that they get too caught up in which language they want to learn. Don’t do that. Trust me, it doesn’t matter. To make sure you don’t fall into this trap, I’m going to tell you exactly what to do.

Picking a Project

First, find out what kind of applications you want to build. If you have a PC and want to make Windows applications, learn C#. If you have a Mac, learn Python. If you want to make web apps, Ruby is a good choice, but you can also use Python. If all else fails, learn Python. It’s an excellent language that teaches you how to structure programs correctly and just generally program the “right” way.

Finding the Right Tools

JavaScript the good parts is a great programming book I used

Once I had been working with HTML/CSS for a bit, I inevitably found JavaScript.  JavaScript is the programming language of the browser.  Most modern websites use some form of Javascript framework (usually jQuery) to handle a lot of the behaviors you see in your browser window.  I did a few quick Google searches and quickly found out about Eloquent JavaScript.  It is an excellent book, and best of all completely free online!

Looking back, JavaScript probably wasn’t the best choice for a first language. Most experienced programmers will tell you that JavaScript has a lot of unnecessary complexity. Which is why a book exists called “JavaScript: The Good Parts.” While it was good for learning basic programming concepts like variables and loops, I didn’t really get a good understanding of Object-Oriented Programming.

Avoiding the Cliff

Choose the right books so that they do not drop you off a cliff

I consider my first real “language” to be C#, a C-based language developed by Microsoft used in a vast number of Windows applications and websites.  The best thing that ever happened in my journey to learn programming was finding a book called Head First C#.  Most programming books start with helpful, guided tutorials in chapter 1, and then drop you off a cliff and expect you to just know everything. The Head First series makes it a point to do the opposite.  They make it a point to translate programming concepts into something that “normal” people can understand, and deliberately avoid the aforementioned “cliff” problem.  I can’t say enough good things about these books, they’re simply awesome.

Setting Achievable Goals

It took me about 3-4 months of on-and-off study to get through enough of Head First C# to feel confident enough to start making my own changes to our web app.  I think the reason I was really able to make progress with C# as opposed to JavaScript is that I had a definite goal in mind. I had something I wanted to build.

Painters never sit down and decide to paint, they always have an idea of what they want to paint when they get started.  Programming is the same way.  As a full-time programmer, I never sit down in front a computer and just say “I’m gonna program!”  They have a goal in mind, something they want to accomplish. You should always endeavor to do the same.

Becoming a Pro

I started learning C# my senior year of college, and spent about 8 months with it before I graduated.  As graduation came closer, I was trying to find a job.  This was at the height of the recession, and there just weren’t that many opportunities out there, especially for people with marketing degrees.  Lucky for me, I had spent the past year honing my coding skills!

Keep calm, study, and become a programmer

At the end of my final semester, I found a programming job listed on my school’s job listing board, and I felt confident enough in my programming ability to apply.  They sent me a test before I came in for a face-to-face interview.  However, there was only one problem-- it was to make a website in PHP...I had never used PHP before! Well, time to go back to the Head First series! I got the test on a Friday, and my interview was on a Monday.  I purchased Head First PHP & MySQL (MySQL is a database commonly used with PHP) and went to work.  All of the knowledge I had gained of Javascript, C#, and even HTML and CSS helped me pick up PHP at a surprising pace.  I finished the website late Sunday night, just in time to get a few hours of sleep before my interview in the morning.

I went in for my interview with a newfound confidence in my programming abilities.  I was able to breeze through the questions they asked, and got an offer later that day.  I had successfully taught myself enough programming to get a job as a full-time, professional software developer. Mission accomplished!

Now that you’ve heard about my journey to become a full-time programmer, in Part 3 of this series, I will give you a set of rules, tips, and tricks that I’ve picked up along the way. Hopefully they’ll be as helpful for you as they have been for me.

Read Part 3: Cures for the Common Code