Codecademy is teaching people to code via a highly interactive website (check them out if you haven’t). I could babble for hours about how the concept is brilliant, and how everything going on at the site is fantastic. But I do not just love the concept, I love the way they are developing their product. I want to talk about two things the Codecademy guys added to the site that I’m excited about.
The scratch pad (and labs)
I have a huge passion for education. I love teaching people about computers and how to program. Codecademy cleared away a big bottleneck I encounter every time I try to teach someone to code—getting started.
Normally you have to install development environments, set up environment variables, download APIs… I have a degree in computer science and it overwhelms me. Codecademy gets rid of all of that and just gets you started. It allows a student to feel successful right away, and to see that programming is approachable and a lot of fun.
But I started to worry –people make it through the lessons this way… but how do they practice? What happens when they get excited and want to try something on their own? All of those things that were barriers to entry might crop back up as barriers again. Enter scratch pad and labs. These two features of the site allow you to program just like you do in the lessons – no installation, no upkeep, no barriers.
Scratch pad allows you to switch from learning mode to practice mode. It shows a text editor and a console. Scratchpad solves the concerns about the new user being able to practice. It works particularly well with scripting languages, but I think with templates and guides new users will be able to practice languages that require a little more groundwork too. It provides the springboard for more features than the Codecademy team could build (saving/loading scratches, case studies/samples, templates…). And best of all, any of these features are perfectly in line with natural growth within the vision for social, online, self-paced learning of software development.
But this functionality is more versatile than just removing barriers to entry. I imagine myself, a programmer, using it when I want to try a new language and don’t want to figure out the crap associated with getting it up and running. Or when I’m on a computer I haven’t set up and want to quickly write or edit something. I can imagine plenty of uses for online development environments – but the users are not beginner programmers. I love that Labs is a separate part of the site from ScratchPad, arguably a different product, because the users are very different. Labs FAQ.
Code year
This one made me giddy. It is so clever some people might think it’s not clever at all.
It’s easy to see that an education site should and will let you “enroll” in a class. Users (including me) were probably asking for this. I’d go to the site, do a ton of lessons then walk away and stay away just because there was nothing bringing me back. Spam is an easy fix, and enrollment in a class is an easy metaphor.
The New Year's resolution has such a strong place in our culture and it’s the perfect thing to leverage here. It’s something we choose to do because we want it and because it will make us better people. It’s something that’s a little bit difficult/outside our comfort zone but that we feel is probably attainable.
The New Year's resolution allows people to “enroll” while feeling like they are in control of their learning (not something generally associated with enrollment), a serious goal of self-paced learning. A resolution captures that this is something done over time but that is completely possible, and therefore what might be “spam” is actually Codecademy supporting you in reaching your goals. Sharing your resolution with your friends helps with accountability and is a natural thing to do. Plus there is strength in numbers; friends that resolve together are more successful. Finally, just like a New Year's resolution, don’t feel like this is anything too formal, all you gave was your email address.
I could go on and on about how fantastic it was for them to choose this metaphor. It was simply brilliant.
Ideas for next CodeYear
The CodeYear.com site bothers me a bit. I think it might hinder the actual goals of the program. Part of what makes this resolution so great is knowing how great the CodeAcademy program is. Knowing that it is fun, low impact, high-reward is really important. Users that encountered CodeYear without knowing CodeAcademy have missed that, and might be more wary of the commitment, or feel less like they will be successful, etc… It might be helpful to tie CodeYear more closely to Codecademy.
Also, the overall design just seems a little text heavy to me, and a little less fun than a New Year's resolution should be. However, code is text heavy, so I’m not sure how much could be done (its easy to criticize). I understand that this was put together rather quickly.
Falling back to the resolution metaphor I’d be interested to think about how to use their rewards system and leverage the social networking to get people excited about keeping up with their resolutions. Coming from the “lose 10 pounds” resolution, staying excited is definitely the hardest part!
Going forward
I think Codecademy have a great concept and are making great decisions. I think as their product grows there are some things I would focus on because they are really exciting. That being said, I ever meet these guys I won’t be able to eat around them and will say dumb things. That’s how it is.
[caption id="attachment_62" align="alignright" width="300" caption="Screenshot of the Hitchhiker's Game"]
Self-paced learning
Having taken quite a few “self-paced” courses myself, I don’t think anyone does it right. Codecademy is definitely getting closer because of its high level of interactivity (its awesome, it’s the hitchhikers game for learning to code). I think their ability to leverage the social aspect of their product (which is currently not as developed) is going to be key. Sometimes we need help from other people.
Self-paced can’t be totally self-paced, as I gushed before in my CodeYear discussion, users need a little push. Keeping CA “enrollment” fresh and fun is going to be a challenge going forward but I think they’ve tapped into some really great ideas for solving this problem (rethinking traditional enrollment, social, competition, etc).
Codecademy sets itself apart from other online courses by leveraging “learning by doing” really very well. I would focus on doing because it keeps things fun and engaging. Programming projects are a great way to practice and get beyond the lessons and really write code. After that I think focusing on supporting students get to work on building “real” things will be key.
Social
I touched on some of this above, but I think the social experience is one of the most confusing parts of the site. The social aspects feel forced, and tacked on. Sure I can let everyone know what I’m doing but how am I interacting with other students. Code development has a long and established history of being social on the web (the entire open source community). Learning has always been a social activity. The social aspects of Codecademy becoming a more integrated part of the experience could take it to the next level.
In college one of our assignments was to work together to program “critters” which “fought” each other. There was no hardware, and battles projected on a screen during a pizza party. Something like this could be a way to actually bring your friends into the Codecademy experience. Have your friends help you write code, pit your code against theirs, and shared timelines and incentives. The experience has goals beyond simply learning.
[caption id="attachment_60" align="aligncenter" width="428" caption="My first semester programming class."]
I could keep going but at some point I'm in danger of a restraining order.
XOXO Codecademy, Love you.