.net: What's the idea behind Code School?
Eric Allan: Most people know how to open up their browser and type into a text field. We think learning to program should be that easy. Most programmers think it's a right of passage to learn the command line and the underlying architecture of computing before ever writing a lick of code – but we don't agree. We believe that coding is fun and installing crap from source isn't. That's why we put coding in the browser, and we developed good content around progressively challenging lessons.
.net: Why did you decide to include gamification elements in the concept?
EA: To introduce positive reinforcement that will motivate people to continue learning. We've found it's not hard to get someone to try coding. What is hard is to get people to try coding again and again. That is why we use gamification. It's just another nudge, a little person on your shoulder whispering "keep going". There has been a lot of backlash against "gamification"; and we think it's mainly against social game developers, who've taken advantage of user psychology to keep their users farming gold or whatever it is they do. We aren't shy about using the same techniques to keep our students learning. The trick is to make sure that we use gamification as a means to an end, and not an end to itself.
.net: Who are the tutors and are you inviting guest tutors, too?
EA: More like instructors. We don't do one-on-one tutoring. Right now, our best instructor is Gregg Pollack, the founder of Envy Labs. If you've ever been to a Ruby or Rails conference, you've probably seen Gregg speak. Most of the people at Code School are programmers, and most fit the typical programmer stereotype of being not very good in front of the camera. Gregg is a freak in that he's got the programming chops and can also communicate concepts well in front of hundreds of people.
For our courses, we are mainly in-house instructors. But for our Code TV screencasts, we welcome submissions from the community (and of course we pay). So if anyone is interested in creating a five to 10 minute screencast, you can check out our Screencasting Framework.
.net: How do you design and build your courses, and what's under the hood?
EA: Each course is a standalone Rails 3.1 app that runs on the Heroku platform. We run code on separate machines using a variety of technologies, depending on the course. For example, for our latest CoffeeScript course we use node.js to run code in an isolated sandbox. We've recently used the really cool phantomjs project to test for HTML and CSS on an upcoming course. Why not just execute JS/HTML/CSS code in the browser, you might ask. Because we want to ensure that regardless of the browser used by the students, they will have the same experience.
.net: What are the main technical challenges in creating slick courses in the browser?
EA: Running user code safely, especially for our Ruby on Rails courses. Rails presents a very interesting challenge because it's not possible to run inside of a traditional sandbox. So instead we do semantic analysis on the code to check for malicious activity. We've open-sourced two projects that we use for this: RubyCop and jruby-sandbox.
We are getting better at detecting bad behaviour, however, sometimes bad code sneaks through. Even when it does, Heroku has things locked down pretty tightly, and the attacker can't do much other than temporarily take down a course. And now that I've said this, I'm sure some of your readers are on their way to take us down...
However, the technical challenge of course creation is dwarfed by the challenge of creating quality content. Each course has over an hour of video, 35 to 50 in-browser code challenges, and hints. Our team isn't happy with just throwing it up in any random way and hoping our students will grasp the concepts. Every course is beta tested by 20 to 30 people. We run through our videos internally many times before they are released.
Since most of our programmers are pretty good (far from being beginners), we have to work hard to make sure we don't assume too much about our students' abilities. It's really easy to lose someone when they are 3,000 miles away. We aren't perfect, but we are getting better. Whoever figures out how to do this right will win, we believe.
.net: How many people have enrolled to date, and how many have actually completed a course?
EA: We've had about 90,000 people create accounts on Code School, and just over 25,000 completed courses. There have been over four million code submissions to our free courses Try Ruby and Rails For Zombies. Try Ruby in particular has been really popular, getting over 300K visitors since its launch in September 2011.
.net: Why did Rails for Zombies specifically take off like crazy?
EA: It was the first online tutorial to marry great content and in-browser challenges. It reduced the friction of trying Ruby on Rails to almost 0. And what can we say, people on the internet love zombies (including us).
.net: How do companies like The New York Times, NASA and IBM use Code School?
EA: Their employees use Code School just like everyone else, to brush up when rusty and to learn something brand new.
.net: How will you change Code School if you attract the necessary funding that you're seeking?
EA: We're actually not seeking funding. We decided early on to go with the money-making strategy, which means charging students for our product. So far, it's working pretty well. I won't go into specific numbers, but let's just say we're going in the right direction.
.net: What's next for Code School?
EA: Our three upcoming courses listed on our Course page are CSS Cross Country, Rails Testing, and Backbone.js. We always list the three upcoming courses, and if you are a member, you can vote on future courses on our User Voice page. For more updates, check out the Code School blog.
CSS Cross Country is released next Thursday, 26 January.