Code School vs. Codecademy: Where are the best coding tutorials?

More than a year and a half ago, I wrote a post about my experience using Codecademy, and to this day it’s one of the most popular posts on my blog. Since then, I’ve tried several different online tutorials for learning to code, so today I want to talk about one of my new favourites, Code School. Let’s see how it stacks up against Codecademy.

You may be wondering why I’m spending time on tutorials now that I’ve completed the program at Bitmaker Labs, but any expert will tell you that learning to code is a lifelong pursuit. There are always new techniques to master and new tools to discover. Both of the sites I’m discussing here have a lot to offer intermediate and even senior developers.

Code School logo

Code School covers a variety of coding topics. Most of these topics are grouped under paths (Ruby, JavaScript, HTML/CSS, and iOS), while a few are classified as electives (including Git and Chrome DevTools). In addition to these “courses,” there is an extensive list of screencasts available on related subjects, but so far I’ve stuck to the courses, so I won’t be discussing the screencasts.

Each course is broken down into 5 or 6 lessons (or “levels,” to use Code School’s gamified language), and each of these sections features a video lecture followed by several exercises (“challenges”). The quality of the lectures is quite good; the instructor is usually shown in a corner of the screen, while the code takes up most of the window, with slick but non-distracting animations, notes, and highlights indicating relevant portions. The videos tend to be 10-20 minutes in length, which is of course much shorter than a traditional lecture. I sometimes find my attention wandering a bit by the end of a video, though, and I feel they could improve the experience by breaking them up into even shorter segments. Having said that, there’s nothing stopping you from hitting pause if you need a break to soak in what you’ve just learned.

The challenges following the lectures use the same general format as Codecademy’s exercises. The site presents you with a customized coding environment in the browser and asks you to solve a problem using the techniques you’ve just learned. One thing I particularly like about the challenges is that you have the option to view the lecture you just watched in PDF slide format, which makes it easy to remind yourself of the most important points of the lecture without having to sit through the entire video again. Each challenge comes with a set of (usually 3) progressively more revealing hints, so if you’re struggling you can get some help without having the whole answer given to you. If you still can’t figure it out, you have the option of accessing the answer, though this will cause you to earn fewer points on that particular challenge.

As I’ve mentioned, Code School makes use of gamification: you earn points for each challenge and badges for each level. Codecademy takes a similar approach, but I found Code School’s implementation to be less obtrusive. Codecademy seemed to be always reminding me of my “achievements,” while in Code School I found it easier to ignore this aspect of the experience. To be fair, though, I think Codecademy has toned it down a bit since I first wrote about them; there is now more of an emphasis on progressing through a track (equivalent to a Code School path) and less on accumulating brightly coloured badges.

So how do these two options compare?

  • I haven’t counted up the topics covered, but at this point in time both sites have an impressive array of choices, so there’s no clear winner based on variety. If you’re looking to learn a particular tool, though, this may influence your choice; for example, Python is only available on Codecademy, while you can only learn about iOS on Code School.
  • In terms of lecture quality, I definitely prefer Code School’s videos over Codecademy’s purely text-based approach. The videos are engaging, and I find they help me visualize what my code is doing behind the scenes. There’s a cheesy jingle at the beginning of each course, but you can skip ahead in the video if they bug you as much as they bug me. I also prefer Code School’s exercises, but there’s a less significant difference here.
  • Codecademy has more of a community feel to it. From the beginning, they have encouraged users to create their own courses for others to learn from (which of course wouldn’t be realistic for Code School’s video-based approach), and there is an active forum where students help each other learn.
  • Hmmm, I guess I haven’t mentioned this part yet: Codecademy is free, while Code School costs $29 per month (or a bit less if you pay per year).

For the moment, I’ve decided Code School’s polished interface and engaging videos are worth paying for. It especially makes sense for me right now because I’m spending a lot of time honing my skills, so I use the site often enough to feel that I’m getting my money’s worth. However, I think both options are great ways to build your skills, whether you’re totally new to coding or have been doing it for a while. Code School offers a number of basic courses for free, so I would highly recommend giving them a try, and go ahead and check out Codecademy while you’re at it.

If you’re looking for more resources, Michelle Glauser has compiled an excellent list (the table is a bit awkward to read on that page, so I recommend clicking through to the full Google spreadsheet).

Learning to code through Codecademy: a great idea, but not quite perfected

As a librarian with a strong interest in web services, I’ve always wanted to improve my coding skills. I’m comfortable with HTML and basic CSS, and way back in the day my friends and I entertained ourselves by creating text-based adventure games in DOS using some form of BASIC, but to be honest, more advanced programming languages intimidated me a bit. So several months ago I was intrigued to discover Codecademy. The claim on their home page caught my attention:

Codecademy is the easiest way to learn how to code. It’s interactive, fun, and you can do it with your friends.

When I first signed up, lessons were only offered on JavaScript, but they have since added HTML, CSS, and jQuery (which works with JavaScript), and more content is being added on a regular basis. In fact, the site offers a course called Code Year, which was designed for people who wanted to make a New Year’s resolution to learn to code. Each week, starting from the beginning of 2012, there is a designated set of exercises for participants to complete.

Registration is free and only takes a moment (Codecademy states that they reserve the right to charge for premium content in the future, but for the moment the site is entirely free). You can give it a try without registering, but I suggest you set up an account to keep track of which exercises you’ve already completed. Each exercise consists of instructions on the left side of the page, and a window on the right with a command prompt where you can enter code and then run it. In some cases there will already be some code to get you started, and at other times you’ll write all the code from scratch. After you hit the run button, you’ll see the results of your code and a link to the next exercise will appear if you’ve written the code correctly. Otherwise, you’ll receive an error message and you’ll have to change your code to make it work. The system makes use of gamification (also popular in libraries): each time you complete an exercise you receive points, and a running tally will show at the top of the page.  Then, once you’ve finished a section of exercises, you’ll receive an achievement badge (an icon that shows up on your profile with a name representing what you’ve learned, such as “Loops in JavaScript” or “Recursive Functions”). After each new concept you learn through these exercises, there is a “project” – that is, a set of exercises where you put your skills to use building a program (such as a blackjack game or a cash register program).

I think this is a great idea. Coding is something you need to actually do in order to learn it –  I’ve tried to learn from a book and found it frustrating to be always shifting my attention from the printed page to my computer monitor. Considering the service is free, I would recommend that everyone give it a try. However, there are a few aspects that still need some work.

What I like about Codecademy:

  • It’s much less imposing than a heavy textbook.
  • Each lesson is broken down into a series of very short exercises, and as long as you’re logged in to your account, this means it’s easy to work through an exercise or two and pick up later where you left off – even if you only have a few minutes at a time to work on it.
  • When you get stuck, you can always refer to the Q&A, which is a forum where you can post questions about a given exercise and other users can post answers. In my experience, I’ve always been able to fix my issues by reading what others have already posted in the Q&A.
  • It’s web-based, which means there’s no software to install and you can log in from any computer (it even works on my iPad, but let me assure you, having to move the cursor around so much on a touch screen is not a pleasant experience).

What still needs work:

  • There is a bit too much hand holding. Too many exercises provide the vast majority of the code for you, and just prompt you to add a line or two. Although this means you can get through more content more quickly, I feel there should be more opportunities to start from scratch. I understand that programmers usually build on existing code rather than starting from a blank page, but I find I learn better when I have created something from the ground up. Some exercises are also too simple, in the sense that they tell you precisely what to type and on which line. I would rather figure more things out for myself.
  • The “hint” feature isn’t used consistently. Usually, this space is used to point you in the right direction if you’re having trouble, and it is a useful feature. However, there are a few exercises where critical information is located in the hint; in other words, there’s no way you could be expected to complete the exercise without looking at the hint. There are also some instances where the hint provides information that isn’t critical but is interesting and helpful to know, which means that if you were to complete the exercise without looking at the hint you would miss out. Of course, consistency is difficult to achieve when the lessons are created by other users, but perhaps they could have an editor look into this.
  • They take the gamification aspect a bit too far. In the early stages it seemed that I was receiving a new achievement every ten minutes or so, which made each one feel like less of an accomplishment. And you earn points for each exercise, even the ones that don’t require you to do any coding (they provide some text for you to read and then prompt you to hit the run button to move on to the next exercise). I would rather have the feeling that I earned all of my points.
  • There are some small technical issues. On a few occasions, I’ve written my code and seen it run correctly, but the error message says I need to change something. Usually when I check the Q&A someone else has had the same issue, and the answer is that you need to use a very specific variable name or change some spacing; in other words, what I’ve done is correct as far as the programming language is concerned, but the Codecademy system won’t acknowledge it. In other cases, the message tells me I’ve completed the exercise, but when I check back later there’s no green checkmark to indicate I’ve completed it. When this happens, I have to redo the exercise in a different browser.

Overall, I am certainly impressed with Codecademy, but it might not hurt for them to slap up a big “beta” sticker while they iron the kinks out. To their credit, each exercise gives you the option to give it thumbs up or thumbs down, so I’m sure they are collecting data as to what works and what doesn’t. I would suggest they take this one step further and put a comment box next to the thumb icons, since there has been more than one exercise I’ve found frustrating enough to want to write down a sentence or two in addition to clicking on thumbs down.

Have you tried Codecademy? I’d be interested to hear your thoughts, so leave a comment below.