The experience of Codecademy

Codecademy badgeCodecademy has been getting some great reactions from my friends who don’t code that much, but have been meaning to get into it (which is everyone, right?). I had a little look when it first went up, and remembered thinking that the method was really clever, but I didn’t spend time going through any exercises.

After my friend Nick Webb said he was impressed by how much content had been added since launch, and that he’d spent 5 hours on a Sunday night eating it all up, I thought it was about time I had another look. Immediately, I realised that the site is a great example of an interactive web app, where the design of the experience has been responsible for the great reactions people are having.

I couldn’t help but note down a few things as I was thrashing my way through the introductory course…

Great bits of experience design:

  • playful intro to the editor from the word go (and the immediate cursor focus on the console), resulting in your first badge, which hooks you in
  • letting you get started without creating an account (my name is “New User”!)
  • …and then making me register once you’re into the swing of things and want to keep going
  • building up when you’re stuck through hints and then forums seems like a good idea
  • the warnings in the editor is helpful (if a bit keen to tell me I’ve written invalid syntax when really I’m just typing)
  • it’s clever that it can test you on syntax even if that bit of the code is not executed in the console – so the exercises themselves can get pretty “non-trivial”
  • you can move to sections you haven’t completed (a la Angry Birds), which is cool since you are trying to build up a body of understanding, and earning points gives you a reason to want to hit 100% complete
  • the challenges are like exams; the decision to show the % complete on the Courses menu prods you to want to complete them

Not so great bits of the experience:

  • calling me a “User”
  • switching back to “Section” from “Scratch Pad” leaves the console at the top, not the bottom where you were; moving to next exercise doesn’t keep console at bottom either, which just means you have to move the scrollbar down
  • completing last exercise in a section doesn’t give you a link in the console to take you to the next section, which is inconsistent; nor does getting to the end of a course doesn’t present you with any direction of where to go to continue
  • it would be really helpful if they captured infinite loops e.g. while(true) …
Experience bugs:
  • you can type in the console whilst it is loading
  • the console loading bar can hit full without it completing (looks like failing to handle an error in jsrepl.js)
  • CTRL+Enter doesn’t work (on mac at least), despite claiming to be a keyboard shortcut

Not sure about these bits of experience:

  • is auto-save of versions good or superfluous? I’m not sure why I’d use that

A few thoughts on the quality of education:

  • some of the answers to puzzles are loose e.g. “Saturday” being accepted instead of “Sunday”, but that seems a good thing
  • some of the looseness is on the logic e.g. accepting “less than or equal to” when you’ve been asked for just “less than” – that is probably not such a good idea
  • you can also cheat, e.g. if asked to do “i–” twice and you just say “i=0”, it works; this also seems bad and unnecessary given that the editor seems capable of marking your syntax
  • the explanation of “var” as something you have to accept to declare variables seems a bit pointless without any understanding of scope, which is when it starts to be useful
  • some concepts e.g. “&&” introduced without the same level of explanation as others (but I guess a bit of a challenge is no bad thing)