Coding adventures and contributing to open source with CodeCombat

Get the newsletter

When I founded my first startup in 2008, I was a programming newbie. A degree in economics from Oberlin College hadn’t prepared me for a career writing production-ready code. Despite my best efforts at slapping together crude HTML and CSS Django templates, my ability to contribute to our codebase was limited at best. So I started slowly teaching myself to code with online tutorials and lessons. After many disheartening starts and stops, I realized why I was having problems sticking with it: code lessons and videos felt like school to me, and I had no interest in returning to the classroom.

What we built next was CodeCombat, a game that teaches kids and students to code. Players use spells (JavaScript) to control their forces in a battle against Ogre enemies. And, on January 8 this year, we open sourced the entire project: servers, art, and all. You can literally clone our repo and have a working version of the game on your local machine in minutes.

CodeCombat is a for-profit, YCombinator-backed startup that sees the future of code education as beginning with instruction and ending with contributions to open source projects. When we designed the product, we knew we wanted to open source all of the code. We envision players learning to code using tutorials on the site and once they have reached a certain level of proficiency, diving into the codebase to work with real live production code with a world class developer network to help them learn and work on a project that’s meaningful for them.

Since we made the open source announcement, our repo has attracted more than 2000 stars, 400 forks, 200 watchers, and 25 contributors. CodeCombat remains in the top ten trending repos on GitHub.

From the announcement:

Closed source may be the choice made by virtually every startup and every game studio, but we believe this is a convention that needs rethinking. CodeCombat is already a community project, with hundreds of players volunteering to create levels, write documentation, help beginners, playtest, and even translate the game into seventeen languages so far. Now the programmers can join the party, too.

Our mission is to teach you to code. Until we have over nine thousand levels taking you all the way from beginner to Bellard, why not jump into a novice-friendly open source project to keep learning? We aren’t just dumping the code out there and calling it a day—we’ve worked hard to make it simple to contribute. You don’t need to know git, you don’t need to have anything installed, and you don’t even need to know how to code to help with some of the issues on our GitHub.

Our goal at the moment is to foster developer interest and continue building an engaged community of contributors around the project. Games provide a rich and interactive way for students and young coders to get involved with computer science, and we hope that CodeCombat eventually becomes an integral reason why millions of students got started on their coding adventures.

Topics

About the author

George Saines - I'm a 28 year old entrepreneur currently working on my second startup, which is a game that teaches people to code. It's called CodeCombat, and we're a YCombinator W14 company with a mission to teach the world to code. I enjoy downhill skiing, talking about cars and computers, working with my hands, blogging, and music videos. Although I wasn't a computer science major, I'm slowly teaching myself how to program. I'm a terrible runner, but I could run a 5k right now, and I have no interest in...

3 Comments

Very insightful George. Games are very powerful way to educate people. Coding, being one of the most intellectual activities, can empower people to improve their lives (and the lives of people around them). One thing I have been curious about since some time: When it comes to teaching method, do you think the way and methods employed to teach code is/should be different for people in different ages?

Hi Aseem, that's a very good question and yes, I do think that code needs to be taught different to different age groups, but with less variety than might otherwise be expected. We designed CodeCombat for high school and college kids, but kids as young as 5 years old are playing it. The biggest hurdle we see among our testers is typing proficiency, even young adults have difficulty with programming syntax. You can be a relatively good typist and still struggle to accurately hit the semicolon and parenthesis keys, for instance. I strongly disagree with the idea that younger coders need a visual layer of abstraction (a la Scratch for instance), but level content, themes, story, and artwork, do seem to be important differentiators for different age groups.

I am an adult learner and already tried to learn all the basic syntax of python, java and swift. however, I found it very difficult to go deeper in learning the languages and make use of it. I tried to read through apple's swift documentation and the basics are fine, but the in-depth uses of protocols, extension, generics, advanced operators etc are tortuously difficult to grasp. I think the problem is that the examples provided are too few and not engaging. I set my hope high on Code Combat to help me become a good programmer, my worry is code combat only deal with basic syntax and provide no guides on anything deeper.

I like the idea of learning programming through gaming, as it engages me with specific tasks and requirements. however, my worry is that the game levels are too simple and won't go deep enough to help me become intermedium or advanced level programmer.

On the other hand, I don't want to give up the hope. I feel my worry may be unnecessary due to the Open Source nature of Code combat. I assume that being able to fully engaged with playing the game and reading the source code, I should be able to climb up to intermediate programmer. Is this plausible? then the question is will the source code be too deep to comprehend for people who just get the basic syntax?

after reading your post, I noticed the following sentence which seems to provide me some assurance:

"We envision players learning to code using tutorials on the site and once they have reached a certain level of proficiency, diving into the codebase to work with real live production code with a world class developer network to help them learn and work on a project that’s meaningful for them."

does it mean I can become an proficient programmer if I work hard in code combat?

Footer

The opinions expressed on this website are those of each author, not of the author's employer or of Red Hat.

Opensource.com aspires to publish all content under a Creative Commons license but may not be able to do so in all cases. You are responsible for ensuring that you have the necessary permission to reuse any work on this site. Red Hat and the Shadowman logo are trademarks of Red Hat, Inc., registered in the United States and other countries.