So I have spent exactly 50 hours learning to code.
Here is an update on my progress since creating my original 100 hour plan and the first 10 hours.
Time Commitment:
100 deliberate hours (minimum) over a 4 month period: October 2011-January 2012
Status: MAKING PROGRESS
Obviously I am way over my original schedule. It’s taken me a while to rack up the hours but I’m getting there. Here is an exact breakdown of what I’ve spent those hours doing:
20 (CA) + 14 (LLC) + 7(U) + 5.5 (LPTHW) + 2 (TC) + 1 (NPT) + 0.5 (EJ)
CA = Codeacademy: Weekly interactive javascript lessons.
LLC = Ladies Learning Code: Toronto workshops for women.
U = Udacity: Online video class that teaches you to build a search engine using python.
LPTHW = Learn Python the Hard Way: Ebook for self-study.
TC = Team Coding: Toronto javascript group.
NPT = Non Programmer’s Tutorial for Python: Wikibooks tutorial.
EJ = Eloquent Javascript: Ebook for with interactive code environment.
100 Hour Plan: What I planned to do vs. what I actually did
1. Ladies Learning Code: Attend every programming workshop they offer.
Status: MAKING PROGRESS
These workshops have been insanely popular. While this is awesome, it sucks because I failed to get into a couple. Good news though, the intermediate-level ones are not quite as popular. I just did Introduction to Javascript and have Intro to Custom Post Types & Custom Fields (WordPress) this week.
2. Learn Python the Hard Way: Go through this book without cheating (too much).
Status: NOT EVEN CLOSE
I WAS really enjoying this. I made it to exercise 10 before shifting my attention to Codeacademy in late December.
3. Hackers and Painters: Read.
Status: NOT EVEN CLOSE
I read the first chapter over Christmas, titled “Why Nerds are Unpopular.” It was awesome. I will definitely read this book soon. Right now my excuse is that I’m working my way through Steve Jobs’ biography.
So, it looks like 2.5 big fat FAILS, right? Well, not quite.
Theme for the first 50 hours: Big, new, shiny things!
I don’t know what’s in the air but it seems that I am learning to code at exactly the right time. There is a wave of learning platforms coming into existence and new coding resoures are being created every day. Doing this project a year ago would have been very different (harder I suspect, and less fun) than doing it now.
While I started out learning from Learn Python the Hard Way (LPTHW), I got completely hooked on Codeacademy once Code Year began. I found the weekly lesson combined with immediate feedback to be more motivating than LPTHW. Then along came Udacity, taunting me with building a search engine using Python.
While the javascript I learned from Codeacademy made understanding python taught in Udacity’s course easier, I now find it a bit confusing to go between the two. I’m sure it’s better as a beginner to just focus on one language first, but there are so many big, new, shiny things to try. Thank goodness Stanford’s CS 101 course has been delayed.
So I’m officially changing my 100 hour plan to include both Codeacademy and Udacity. Learning is about adapting, right?
Goals: An Update After 50 Hours
Here’s a look at how I’m doing with the original goals I set for myself.
1. Learn the basic principles of programming.
Status: SUCCESS IS AROUND THE CORNER
So I said that learning two different languages was a little confusing BUT it’s good in that one re-enforces the other. For example, having procedures in Python and the equivalent functions in Javascript explained to me in two different ways means I really get it.
2. Become familiar with various programming languages and their uses.
Status: SUCCESS IS AROUND THE CORNER
Kind of absorbing this through osmosis thanks to Hacker News. Exposure to multiple languages (Ruby, Python, and Javascript) is also helping.
3. Learn to code in one language.
Staus: MAKING PROGRESS
Since I am splitting my attention between Codeacademy (learning javascript) and Udacity (learning Python), I’m not confident this will happen without first deciding to focus on just one language.
4. Build something using that language.
Status: NOT EVEN CLOSE
Until I learn one language to a decent level I feel like I am still far away from this. I’m not sure this will be doable within the 100 hours. Of course, “build something” is kind of vague. I think what I initially had in mind was something that would actually go live online which requires learning a bunch of other things in addition to a language.
Learning to Code: Successes
I am loving it. I am surprised by how much I love it. I like my brain while I am doing it. Problem-solving is something you think you do all the time as a knowledge worker but you don’t. This is different. I actually think it sucks now to type and not have something happen other than words. And the high you get after you’ve solved something hard that you thought was impossible, is there a name for that? Ha, and I’m just talking about a Codeacademy problem. Anyway, if you can’t tell, I think I’m in love. And that is always a good thing.
Learning to Code: Challenges
These 50 hours have not been without challenges.
1. Finding the time.
This has really required a behaviour change from me to develop the habit of practicing coding. See more below.
2. Finding the focus.
Trying different sites, different languages, reading articles, collecting resources, messing around with this blog. It’s all useful but takes away from time spent actually learning.
Learning to Code: Lessons Learned
When you’re learning a new skill it’s important to not let too much time go by in between sessions for practicing that skill. I found that if I let just a week go by I’d forget what I had learned and would have to go back and waste time reviewing.
Finding the time (and discipline) to practice each week was challenging so I enlisted the help of Habitforge, an online tool designed to help build habits. With it, I ended up doing 30 minutes or more every day for 21 days. This daily practice (spent mostly on Codeacademy) really helped me to advance and get over that hump.
What’s next:
I’m going to continue with Codeacademy, Udacity and Ladies Learning Code which will fill 50 hours easily. I may try Stanford’s CS 101 if it starts soon.
Verdict:
Big, new, shiny things are distracting but I’m loving it!