Thursday, June 13, 2013

Learning to Code: Codecademy

One of the things that spurred me to start learning HTML was a Lifehacker article titled "How and Why to Teach Your Kids to Code". The title caught my eye because I thought it was something that Justin would be interested in and so I read through the article and saved it to show him later. As I thought about the article, I kept thinking about what a good idea it was and how we could incorporate coding into our (hypothetical future) children's education.

And I was struck by the idea that if I'm planning on having children learn how to code then I should learn too. I mean, it can't possibly be that hard if children can learn it And besides, coding languages are always referred to it as a 'language', presumably because of some sort of resemblance. Heaven knows I love foreign languages, I took three in college (four if you count formal logic) and other linguistic classes on how to decode languages. Besides, learning to code could actually be a lot more useful in my everyday life than some of the other languages I know (Sorry, Latin! You know I love you).

So I found myself going back to the Lifehacker article and reading it more carefully to see what looked like a likely candidate for me to work with. The author suggests both Codecademy and Khan Academy as good, free options for older kids and adults so I thought I might as well start there. I opened up both websites and got started looking around.

I know that I judged a book by it's cover but I knew instantly that Codecademy was the place for me. It's homepage is clean and simple and invites you to start playing instantly. I played, I stayed, and I'm happy I did.

For me, Codecademy is simple and easy to use. While Codecademy has many stand alone lessons and projects that you can work on, the easiest way to get started is by doing one of the 'tracks' they have put together. These tracks are a collection of lessons and projects grouped around a specific language or theme. They have tracks for lots of different coding languages but I decided that the Web Fundamentals was the best place for me to start.

Web Fundamentals has six courses; three on HTML and three on CSS and teaches the skills needed to build a simple website (think Geocities). Each course has either three or five lessons and each lesson is broken down into exercises. After each course is a final project that is designed to help synthesize what you learned in the course. Overall, I've really enjoyed working on the Web Fundamentals track which I finished on Tuesday.

In particular, I like the way each exercise is laid out. In many ways it reminds me of my favourite method for learning math. A description of what you're going to be taught, an explanation of the method, a brief example, and problem with a set of directions on what steps to take. The directions are purposely somewhat vague so that there are some elements to figure out on your own but there is a help section at the bottom that will provide further suggestions.

Each exercise builds on what you've learned in previous exercises and actually has you repeat things that you've learned in previous exercises and lessons in order to learn new things. For example, I have no idea how many times I've posted photos and linked pages in my quest to learn how to make fonts italic or funny colors but I know I've done it many, many times. 

As the lessons go on I found that the directions began to get less explicit. I actually thought this was a good thing for me. Like any true language, HTML and CSS each have their own grammar structure and punctuation marks. Having less explicit directions forced me to make sure that I really understood the structure of the language and made sure that I wasn't just mimicking what I saw in the directions.

On of my favourite features of the exercises was the automatic checking feature. When you submitted an exercise and it found a mistake it would pop up a little box saying "Oops, did you forget to do xyz?" which is a pretty blatant hint. Also, once you're working on CSS there is a hint feature built in that put a red x at the beginning of a line of code if it found an error. It doesn't tell you what the error is but it enabled me to backtrack and fix it before I got too far ahead.

In summary, I'm very happy with Codecademy. I feel like I've made good progress and that I learned a lot. I went from knowing nothing to knowing how to make beautiful Geocities websites! I also just really liked how Codecademy is designed. It makes it fun and I'm already pondering what code language I want to start next. If you're looking for a simple, structured way to learn some coding skills then I would definitely suggest Codecademy.

How about you all? Have you ever used a website to learn to code? And if yes, which one and what did you think of it?

Disclaimer: Codecademy has no idea who I am and definitely did not pay me or give me anything in exchange for writing this post. I just really loved their website and wanted to share it with you guys.

No comments:

Post a Comment