Codecademy's Code Challenge Philosophy

We’ve had a few questions about why we’re doing code challenges in the way we’re doing them. Why do we ask people to submit their answers directly in the thread, where anyone else can see them?

###The main point of these coding challenges and exercises is to give people a chance to test their skills beyond Codecademy courses or projects, and to learn how to pass coding challenges issued in job interviews.###


##Drawbacks to an Open Submissions Format

If people want to look at other submissions, then they will miss an opportunity to truly test themselves and their skills, so they’d primarily be hurting themselves! They would also miss out on practicing these questions as if they would have received this challenge in a job interview setting where such “cheating” is impossible, so they may damage their chances in a job interview too.

Admittedly, issuing code challenges in this manner makes fairly choosing and honoring a winner harder. Open submissions like this would be a poor way to run a competition with a monetary prize or the like, but given that those who “win” these challenges will “only” get public recognition online (aka Internet points), we aren’t too concerned about stringent enforcement of totally original work. We hope that we’ll be able to catch people who blatantly copy-and-paste the work of others, particularly by preferring as winners those who have suitably explained their submissions when it comes to making our deliberation as to winners. If we have a fantastic yet unexplained entry versus an objectively less well executed answer that is very well explained, we’ll go for the latter.

##Benefits from an Open Submissions Format

Being able to see other people’s submissions offers the following benefits:

  • Social proofing - seeing that this is something other people do and enjoy makes further participation more likely.
  • Being able to quickly see other attempts after making your own enables users to (in a sense) receive instant points of comparison to their own work (rather than waiting a week to check back in).
  • Though we do like to give some feedback on common approaches or errors and highlight the best approaches and solutions, we only do so several days after the challenge is issued, and we cannot provide personalized feedback on dozens or hundreds of submissions, so a “self-serve” or inferred feedback system is beneficial in this respect
  • Allows users to like (or upvote) good submissions, which again makes it easier to not only try the challenges yourselves but learn from the work of others
  • Allow users to give one-another feedback directly by replying to submissions.
  • Perhaps most importantly, collecting submissions in this manner builds up a collection of responses for us all to use as reference.

##Building an Open Library of Helpful Content

With this last point, we think and hope that these challenges won’t just be fun to participate in, but that continued responses will build a library of this type of content. This should help people to learn more about how to think like a developer in solving problems and to help users to prepare for job interviews where these sorts of questions do arise. We think that this will be useful to our users, especially as unlike many similar resources online it will be 100% open and free.