About ten months ago from the time of this writing I decided I would teach myself how to code. At the time I made this decision I had recently graduated from SDSU with a degree in History, and had been searching for what I wanted in a ‘career’. Among many factors, I choose to teach myself how to code because I saw the competitive landscape of the post Great Recession economy and decided I would try learning something that only a small minority of society even attempts to understand. I had also lightly dabbled in computer programming since I was in High School, but never spent the time to fully learn the fundamentals. Initially I was just as intimidated as the average person would be of programming, but I quickly learned that if you just stick with it, learning to code is no harder than learning a new foreign language. This is not something you can teach yourself in a day, a week, or even a month, however if you are the kind of self-learner that never gives up, computer science can be an incredibly rewarding skill to learn. I am now currently 3 months into the start of a great career at an awesome company, doing challenging and rewarding work that I enjoy. Learning something like computer programming on your own is not for the average person. You have to really want to learn, and have a border-line obsessive compulsive determination. If you are just starting to learn how to code and are looking for resources and motivation to continue your self-studies, I hope that I may be of help with this article.
I started by taking a few courses at my local UC Extensions for basic HTML and CSS. This was by far the most expensive part of my self-education at around $600+ per course, however I see this initial expense as a benefit. It forced me to want to attend every class and over-perform on the homework because I really wanted to get my "money's worth". After taking HTML in particular I realized that I had been WAAAAAY over-thinking the complexity of building websites. I didn't even realize it, but I knew most of the fundamentals of HTML already by just using the internet regularly. If there is a first course you should start with, it should be HTML so that you can start to understand how you are likely over thinking the difficulty of the internet. After taking the UC courses I came to realize that I could learn any computer language, as long as I spent the time to fully get to know the markup.
I decided that I would try Ruby / Ruby on Rails as my first real programming language after the HTML and CSS courses. I decided on Ruby because the syntax is (arguably) easier to read and write than other languages. I started by watching YouTube tutorials, then came across the Lynda.com Ruby on Rails video tutorials (which are generally OK). I spent about a month watching and following along with a few Lynda.com programs, however there seemed to be something missing. I just wasn't picking up the material as fast as I had hoped. This was about 2-3 months into the process and I was getting a little disheartened, so I decided to really double down and dive into learning at 110%.
I came across Codecademy; a fairly new learn-to-code startup back when I started using the site. I struggled through most of their available courses, which at the time were not very well written. Codecademy is now almost a year older than when I started using it, and their material is much much better. I have recently gone through a number of their new lessons and can confirm that they have become a pretty good place to learn, especially their API courses are pretty awesome.
Around the same time I also started working with Treehouse and Code School. Both Treehouse and Code School catered really well to my personal learning style. I made it most of the way through the Ruby on Rails courses on both sites, and then started going through the other material including HTML, CSS, and PHP courses. I would say that while similar, both companies complement the learning process in different ways. Treehouse is especially outstanding for Beginner - Intermediate level students and their teaching platform is the most stellar of all the learning sites I've mentioned in this article. In my opinion the Treehouse instructors are the best online, and interact with students often through the Treehouse Forum; answering questions, and offering help/feedback to students in a surprisingly timely manner. Code School is more for the Intermediate - Advanced level student. Initially I found Code School really hard to follow, but after a few months working with Treehouse I came to realize Code School was a great place to head once I began to generally understand how to program. The Code School courses fly through material much faster than Treehouse, but the courses are absolutely loaded with great content to learn. I will go into more depth on both of these companies in a future article, but I think both are a huge part of the reason I was able to succeed in learning how to code.
After completing a few projects for friends, I began work on one of my side projects from college. Within a 2 week sprint I had completely transformed the website into something that was actually starting to resemble a real web application. I started coming up with ideas, and was able to write them out in code and see them work. This was a pretty exciting time and was full of many 7am-2am coding sprees. I also began to generate some word-of-mouth interview offers via friends that I had helped the previous months.
I decided I also needed a personal website where I could have a place to showcase my previous work, practice more small programming ideas, and write about my learning progress. One of the projects I started was in creating a badge widget that automatically pulls my 'progress report' from the online schools I was using to learn how to code. I still wasn't terribly good at programming, so I started it off in just static HTML and CSS, but the student community at Treehouse really liked the idea and a collaboration project was started. Treehouse even opened up their site to enable us to pull our badge information more easily, and after a couple weeks of work we had a half-decent working widget. I made a small post about it on the Treehouse Form, which Treehouse ended up featuring on their Facebook and Twitter accounts. All of a sudden I was getting massive traffic to my blog from all of the Treehouse students stopping by to have a look at the widget!
*As an interesting observation, I also noticed that the feature on Treehouse kicked up my sites organic SEO a ton.
A few weeks later an opportunity presented itself to interview up in Los Angeles. I would say I generally didn't take the interview all that seriously, mostly because I didn't think there was any chance I'd do too well given my lack of a Computer Science degree and only about 8 months of self-taught education, but I figured it wouldn't hurt to see what a "tech interview" was like. I showed them my portfolio of work I had done when helping my friends out, and the various projects I had been working on myself. Apparently I did alright in the interview, and they offered me a bigger salary than I asked for. I hadn't even considered moving at the time of the offer, and I had 7 days to let them know if I'd take the job, so I frantically started trying to figure out what the heck I was going to do. In those 7 days I ended up landing another interview in the Silicon Beach area through a friend, and apparently did well enough there as well as they matched the other companies offer. Within 7 days I had gone from scraping by, bootstrapping my self-education, to getting 2 kick-ass job offers. I figured this was a sign that I had to move out of the San Diego area, and I have been working at one of those companies for almost 3 months now. I won't tell you which here, but a quick linked-in search might give you a clue. If there were a few things I think I did well in the interviews that landed me these offers, I think my portfolio of past work and my obvious hunger to learn shown through as positive assets. I feel incredibly lucky to have my current opportunity to work for a tech company and start building my experience.
If you are curious about anything mentioned in this article, let me know in the comments below. I will try to answer any questions you may have in as timely a manner as I can.
Riley scribbled this article down on: July 24, 2013