
Oh man I love this. Code Academy turns the Javascript (for now) console into a game, giving you bite size challenges organized into courses, tracking your progress and giving you badges/achievements as you progress. It’s a slick gamification of learning to code, or to use the term I prefer, an effective choice architecture around it.
Why is it good?
Code Academy recognizes and focuses on a tight basic unit of gameplay: the console.
Much like JsFiddle or jsdo.it, Code Academy blows away the usual barriers to coding (the text editor, file system, and for server-side languages… well, where do I start) and just lets you go.
Click “Get Started”:

…and you stay on the same page. You start by… starting.

Code Academy creates a tight feedback loop
Focusing on the console creates a tight loop between coding and feedback, and Code Academy does a great job of exploiting this. Your progress is always visible, even in small ways (all I did was start typing in the 8th lesson, and the ’8′ chevron was highlighted).

It’s very easy to see where you are at any given point, too. There are two courses, I’m 12% through one, and have 0 achievements. Yay.

Achievements are nothing new of course, but they get to an important consideration, and one which differentiates a game from mere pointsification. Well designed achievements or badges take the raw data of your activity and give it meaning.
You coded 10,000 lines – you’re now a Hacker!
These do a great job of calling out what players have achieved. Others see your Hacker badge and have a clue to your skill level. That helps them know to ask you for help.
You helped others code 50,000 lines – you’re now a Teacher! You can now create new exercises.
The next step is to use that data not just to give names to the attributes of the players, but to use those names to personalize the game. In real life, if I’m badged fireman, I have access to certain tools that make it possible for me to fight a blaze in ways that a normal person can’t. If society awards me the badge of tenured professor, I get other privileges (e.g. an army of grad students, the Unobtainium of the academic world). In Stack Overflow, your reputation on the site gives you new privileges (e.g. editing the community wiki). These are meaningful consequences of badging because they create new affordances for you to interact with the world.

I think an essential part of the frustration many have (myself included) with mainstreaming gamification is how many implementations focus on just giving people points for their activity. This creates this highly visible reward, but it only pulls you so far because it’s extrinsic, not intrinsic.
Take running. You might do it to increase your points score (miles run? calories burned? running that marathon?), but what sticks is realizing that your improved fitness allows you to do other things, and the feeling of mastery from learning how your body works, knowing how to navigate the technicalities of running equipment, experiencing the naches of teaching others.
The Daft Punk model of gamification, or how Code Academy could eventually support meaningful progression.
What I think pulls games out of the pit of pointsification is using those points and badges not as an end in themselves, but as data to determine when the game should unlock the meaningful consequences of the player’s actions. The ideal system rewards you by giving you new ways to play it harder, better, stronger, faster.
I can see the start of this in Code Academy. As you progress you gain new mechanics for your console, going from this simple text box…

…to a richer one. Note the a) hint, b) line numbers, c) ability to save different tries.

These are weapons that help you code, and you can easily imagine the vector from those features to those of a fully fledged, beautiful text editor like Sublime Text.
Level 10! You just unlocked the minimap. Level 15! Intellisense!

Coding already gives you a ton of feedback as you get better – you create things and get the satisfaction of watching them immediately pop to life. I find it magical, still.
What I hope Code Academy will do is keep finding ways to reinforce that sense of progression by progressively introducing those tangential things that aren’t pure coding technique but are key to making you better. Design patterns. Debugging tricks. Text editor shortcuts. Resources to help you learn. The right blogs to read so you can keep teaching yourself. Server configuration (yerch). Basic computer science ideas. Places to submit open source code, so you can integrate with the wider community. Those are equally important weapons in making you a good hacker and meaningful structures that Code Academy can help build.
Big O Badge: You learnt Big O notation. Javascript Profiler now unlocked. Your next mission: optimize these ‘for’ loops, and teach Big O to someone else!
These are also the kind of things that might make those badges truly rich and meaningful.
But this is the future. Code Academy is obviously in its early days, and it’s already awesome. Go check it out and tell your friends! I can’t wait to see where it goes.