Codecademy 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) …
- 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)
