Skip to main content

CodeSchool vs Codecademy(or 'How socket inherits event listening methods and implements asynchronicity')


In this review I'm going to focus on the pedagogy that I see evident in some CodeSchool courses and compare them to  Codecademy. By pedagogy, I mean: 'How does CodeSchool teach?' and ' Does it do a good job of teaching?'. I'm going to argue that despite high quality videos, colourful web pages, and often ssspppeeeeeakkkiiiing...rrrreeally...slowly..., CodeSchool's pedagogy is inferior to that of Codecademy.

There are many fantastic resources for learning to code on the web, and CodeSchool is one of them. So far I have completed courses in Ruby, Rails, Javascript, HTML/CSS, Jquery and Git on CodeSchool. The courses have all included high quality videos and colourful, interactive exercises- as well as massive pdf files of the slides (the files take more than a minute to load on my machine.) The question is: does the higher production value mean better educational quality?

The 'Try' courses on CodeSchool(such as Try Ruby and Try jQuery) are free and serve as hooks for complete beginners. The Try Ruby course gives the beginner an overview of the Ruby language and contains some whimsical art as well. However, unlike the free Codecademy course on Ruby (which lacks art), Try Ruby doesn't lead anywhere. If you pay for a CodeSchool membership, you have the option of RubyBits courses which are designed for Rubyists who want to improve their code, or for programmers coming from an another language who will be able to follow the talk of inheritance, encapsulation and namespaces. There is no true beginner option for CodeSchool in Ruby. Codecademy on the other hand provides an in depth course after which a beginner could start creating new programs from scratch.

The JavaScript track is better- the courses build more logically and a beginner could learn the basics of Javascript doing the first few JavaScript Roadtrip courses. However, as other reviewers have pointed out, once you have watched the videos, it's difficult to review what you have learned (except by re-watching the videos).  There are no transcripts or clearly written explanations of the new concepts learned, instead you can download the slides. The slides contain the code taught, but lack any explanations. Again, what Codecademy lacks in high quality videos, it makes up for in clearly worded explanations for every challenge (95% of the time- sometimes the explanations are a little unclear, but nobody's perfect).

Yesterday, I started the CodeSchool Node.js course for which you need to be comfortable with Javascript and jQuery (which I am). The first video begins with a clear explanation of the difference between 'blocking' and 'non-blocking' code, with examples. So far, so good. If you listen carefully however, there is still a lot being assumed. 

Here's a sample:
Only because I spent last week learning about HTTP, sockets, servers, ports, clients, etc. in Ruby could I understand what was going on here. No explanations of the concepts involved were offered-the knowledge was simply  assumed. Some people will respond : "OK, but you can look that up on the web and learn about sockets and HTTP." True, but then what am I paying CodeSchool for? 

Many of my criticisms apply to a particular instructor in CodeSchool who seems to suffer from 'expert blindness'. He knows so much about the material and has been programming for so long, that he doesn't realise how much other people don't know. He therefore uses jargon without properly explaining it. He introduces too much new jargon at once and moves on before it's had a chance to sink in. This difficulty could be overcome if there were accompanying text for the videos. That way, a beginner could look back and read over difficult concepts at their own pace. 

Perhaps I'm wrong here and he doesn't suffer from expert blindness; perhaps the courses really are aimed at programmers who want to learn new skills (and looking at the accompanying course reviews, most of the positive reviews are from experienced programmers). That's fine. The problem is that CodeSchool claims to be beginner friendly. Beyond wasting $29 a month, a beginner could end up frustrated and deciding they were no good at coding if they used CodeSchool as their primary learning resource.

Codecademy on the other hand is perfect for beginners. It's simple and doesn't waste screen space on videos, animations and cool art. Instead it uses most of the screen as a text editor, has a column of explanatory text and exercises, and puts aside a small window as an output console.
Codecademy also implements a crucial teaching technique which CodeSchool lacks: repetitive practice. 

Though much bashed, repetitive practice is essential to beginners learning to code. (For great examples look at Zed Shaw's courses.). I've seen reviewers complaining of 'too much typing' in Codecademy... Seriously? That's like complaining about too much 'chopping' or 'frying' in a cooking course. Not only is typing what coders actually do to write code, typing code is what gets your brain to learn syntax. After completing the jQuery course on Codecademy, I had probably typed:

$(document).ready(function(){
}): 
100 times- but I will never forget how to setup a jQuery function. The CodeSchool jQuery course was very difficult to follow and contained very little practice- instead, it has you do each new command once, and once only.

The other design advantage of Codecademy courses is their coherence. In the CodeSchool Javascript course (which is admittedly better than other CodeSchool offerings), each new challenge often has you doing a different task. Sometimes, a few challenges in a row will focus on building a single method. But often, each new challenge introduces a completely new method aimed at doing something different. This means you aren't seeing code grow in complexity, but instead are often adding single lines even at the more advanced levels. Codecademy wins here by including mini-projects where you build a functioning object like a cash register or mini choose-your-own-adventure game. 

Overall, Codecademy courses have been designed for true beginners and do an excellent job at getting people to a stage where they could start writing their own programs. I think CodeSchool does a poor job of getting complete beginners to this stage. CodeSchool puts a lot of resources into appearance but lacks the depth of Codecademy and other free resources.



Comments

Popular posts from this blog

Algorithm Analysis - 1

Currently, I'm learning to perform algorithm analysis using Big-O notation. In one resource I found the following problem: You just dropped a box of glass toys and  n  toys in the box broke in half. You'd like to match the halves of the toys so that you could glue them together, but the only way to tell whether two halves belonged to one toy is to physically pick up the two pieces and try to fit them together. Express how long this matching process will take in terms of  n . The answer given is n^2 (n squared) with the following explanation:  You have to compare every piece with every other piece. If you have 1 toy and it breaks in half, you have 1 comparison to make. If you have 2 toys and they both break in half there are 4 pieces and you have to do 6 comparisons. If you have 3 toys, there are 6 pieces and you have to do 15 comparisons. If you have  N/2  toys, you have  N  pieces and you have to do N-1 + N-2 + N-3 + ... + 1 =(N)(N-1)/2...

Ruby, RSpec, Linux and Relational Algebra (or "What I'm doing this Christmas")

Last week was challenging- I'm beginning to appreciate the need for a programming buddy.  So far, I haven't found a Ruby IDE that helps with missing brackets or illegal syntax. This means hours spent looking for errors which more experience (or an IDE) would have solved in an instant. I've spent a lot of time on Stack Exchange looking for solutions to problems that many have already had- so far I haven't had to post a single new question (though it's evident that many people post duplicate questions, not having looked for a solution first). I spent longer on the Ruby project than anticipated, BUT I really enjoyed learning about Behaviour Driven Development. Thinking of tests in RSpec and then watching my Ruby script pass (eventually) was like passing an exam (though  one I had written myself). This week I'll be starting Rails-after I complete the CodeSchool Rails courses I'll go on to their RSpec course. Partly for the geek cred, partly out of curiosit...