When you have had some time since your schooling, you tend to start losing an edge on the things that were taught. Things that we learned in our computer science classes no longer come quickly to our minds. Especially if you get a development job that doesn’t require you to use all of your skills all the time (Which none do).

That’s when you need to step in and take back your brain. Time to sharpen your edge.

Challenge Sites

There are a lot of different challenge sites out there, however, my favorite is CodeFights. Several reasons exist for this, but the biggest reason is their answer submission. I’ll get into that. First… What is a challenge site?

A challenge site is a community site built to hit on several aspects of computer programming. They tend to have sections and categories based on several things.

  • Algorithms
  • Language Syntax
  • Dev Ops
  • others…

Algorithms tends to be the largest and most used categories that I have found. Each of these categories has separate challenges for you to complete. Some may want you to implement a sorting algorithm using your favorite language. Each challenge has a goal, and you are scored on how well your code works.

They tend to use test cases for the scoring. Usually, there are a few sample test cases that you can see what is required of you. These include an input and an expected output. Beyond the sample test cases, you are required to pass a certain number of hidden test cases in order to get the full score. These are unknown inputs, and can really break your algorithm if you don’t have all your ducks in a row.

Why CodeFights

CodeFights is one of many sites out there that provides challenges. However, I tend to enjoy CodeFights more than any other one. This has to do with their community, the way they present challenges, and the way you output your answer.

1st and foremost on my list of reasons is output. The biggest thing for me is the way they require you to output your answer. Most challenge sites I have seen use your STDOUTi for getting your output for the question. However, CodeFights uses just a simple return from the function they setup for you. You write your logic inside the function and then send back your output via return. This is awesome because they are able to allow you to write out to STDOUT for debugging purposes. Now, you want to disable this for submitting your code because they tend to have hidden test cases with a ton of information. The debug output can slow your program down and cause it to fail tests.

Secondly, I love that they want you to write a function. They give you data through your function inputs, and you send the answer via a return statement. This means that the code you write for each functions is readily usable in any other project you have.


Something that I think CodeFights does really well is gamificationi. They have the typical challenges that most sites have, but they have implemented levels and currency. You earn xp (experience) and coins by completing a wide range of tasks. Currently the only thing your coins do is allow you to purchase a t-shirt, but the ranks that you gain from xp are pretty cool. You can tell who has been around for a while.

They also have several other factors of gamification including badges, an arcade, bots, and their biggest feature - fights. Badges are badges, and you get them for compeleting various achievements. The arcade is awesome. It’s a level progression system for working on different topics. It gives you instant gratification for completing tasks. Starting easy and slowly building to more complex challenges.

Final Thoughts

There are a ton of features for CodeFights but better yet, you should head on over there and try them out. Keep learning, and keep building your skill set. CodeFights is just one way to do that.

Join CodeFights

itemi - Means more information is available as you click on the item.