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

Einstein's Logic Puzzle (SPOILER ALERT!)

On Monday I began working through a Discrete Math textbook in preparation for some courses I'll be taking in January. There was a beautiful logic problem in Chapter 1, apparently created by Einstein. This is one version of it: Five men with  different nationalities and with different jobs live in  con secutive houses on a street. These houses are painted  dif ferent colors. The men have different pets and have   dif ferent favorite drinks.  Determine who owns a zebra and  whose favorite drink is mineral water (which is one of the  favorite drinks) given these clues:  The Englishman lives  in the red house.  The Spaniard owns a dog.  The Japanese  man is a painter.  The Italian drinks tea.  The Norwegian  lives in the first house on the left.  The green house is  immediately to the right of the white one. The photogra pher  breeds snails.  The diplomat lives in the yellow house. Milk is drunk in the middle house. The owner of the green  house drinks coffee. The Nor

Ruby on Rails -First App

Yesterday I built my first (technically second) Rails app working through Michael Hartl's book . The 3rd edition is free to read online and has been recommended by several self-taught developers; it is also on The Odin Project curriculum. The first tutorial covers the basic installations, including Git, Heroku and Bitbucket (instead of GitHub). The steps are clear, but the language sometimes is not.  Most of the steps worked -except that my app doesn't seem to work when accessed from Heroku.    When running bundle install, I ran into problems with the SQL gems. Apparently this was because Ubuntu14.04 didn't come with the C compiler needed.  I needed to run:                                sudo apt-get install libsqlite3 -dev                                sudo apt-get install libpq -dev             After this the bundle install  went ahead fine.    I also finished CodeSchool's Rails for Zombies which introduced basic Rails. As a review, I'm now worki