practice your coding skills with celebrant code challenges

One of my favorite hobbies is “solving code challenges”. If you’re a coder you most likely know already what I’m talking about. To me those challenges are like sudoku. Just better. Cause it’s code.
These highly addictive sites are a fantastic way to practice your coding skills or just language specific features, by solving problems in a very playfully and rewarding way.

Here is a list of code challenge sites I’ve tried out. Of course I haven’t explored every corner of them. Therefore, in case you have some additional insights, please feel free to let me know.

CodeSignal
(multiple languages)

Probably my favorite code challenge site at the moment. The UI is just pretty, loads quickly and is easy to understand.
CodeSignal actually also offers services (e.g. certified tests) for companies. Why is that interesting? Because it might be that you come across some of those type of tests in a hiring process.
CodeSignal offers:

  • Online code-editor (vim | sublime | emacs)
  • Arcade area: Very game like environment. The challenges are divided in different sections (Algorithms, DataBases, Python). You follow paths with names like “The Journey Begins”. Just fun.
  • Interview questions: This area is divided in different topics (trees, graphs, linked lists, arrays, bits, etc. ). The interview exercises seem to be designed by companies (e.g Google, Facebook, etc.) and can get pretty hard at some point. But I guess those are the ones you might come across in a real world hiring situation.
  • Tests: You can choose between practice (1 hour) or take a real test. For the latter you apparently receive a certified result page, which you can hand to hiring companies.
  • After every solving you get coins and/or badges and some statistical info, like: “You’ve solved this exercise 27% quicker than you’re average.
  • When you’ve solved a problem, all solutions (in every language) will be accessible.
  • Activity board (like the one on github), to see on which days you’ve been practicing.
  • Community forum.
  • Other things will unlock if you are further into the “game”, by paying with coins you earn after every solved problem. VERY COOL!

PyBites
(Python)

Python is just a really great language for many things in the programming world. So to get your skills up in that language is always a good idea. Therefore it is fantastic that Bob and Julian build an entire learning platform for the language. Their site offers articles, news and a course (100 Days of Python). But what excites me the most is, that they have a github repository with more than 60 challenges. How it all works (like forking the repo, submitting your solution, etc.) is all explained in detail on their site. I learned a ton about git just through solving a couple of their challenges.

But that is not all! They also provide online exercises that fit right into this post’s category: Bytes of Py!

  • Online code-editor.
  • Exercises in different difficult levels (beginner | intermediate | advanced)
  • The intro and the first premium exercises (15 in total) are entirely for free. After that they offer several, very very fair payed options.
  • Slack channel (for free).
  • A 100 Days of Code Guideline.
  • Ninja-Ranking system with belts (Who doesn’t want to be a ninja?!)
  • Ninja-Certificates.
  • Add your own exercises (on Enterprise tier)
  • Interviewing candidates through their platform (email with link to a Bites Of Py exercise)

CodeWars
(multiple languages)

CodeWars is very dear to me, since it has been the first site I encountered for practicing my coding skills. They provide:

  • Online code-editor.
  • Coding exercises (called katas) in different levels (easy | middle | hard).
  • Visible test-cases (which you can edit if you so wish).
  • A ranking system (8-7 kyu & 1-4 dan) , that allows you to become a curator yourself at some point
  • Once you solved a problem, all submitted solutions (in the language you’ve used) become accessible. (You could have a look at them before you’ve solved a problem, in which case you won’t get any ranking points.)
  • Community forum.

Hacker Rank
(multiple languages)

Hacker Rank was introduced to me not very long ago. The UI definitely looks slick.
What can be a bit confusing in the beginning, in comparison to the other sites: quite often you have to first read the input from stdin and modify it, so that it can be processed. Once you realize that it’s all fine.


The exercises I’ve tried so far were fun and the tutorial videos were fantastic. On the 30 Days of Python track for example, they send you an email everyday, which contains a link to a little exercise, which you’re encouraged to solve on that day. “P.S. I love you for coders”
What Hacker Rank offers:

  • Online code-editor
  • Coding practice exercises (categorized by skills).
  • Scheduled competitions where you can compete against others directly and in real time.
  • Tutorials (like: “interview preparation kit” or “Learn to code in 30 days”).
  • Motivating notifications that suggest what you could do next.
  • A jobboard.
  • A leaderboard.
  • Email companionship for certain exercise tracks.

CheckiO
(JavaScript, Python)

Probably the prettiest environment. You can choose between JavaScript and Python and then you will find yourself in beautiful designed map of islands. Every island offers a different flavor of challenges. What I think is a very good idea: after every solved problem, you won’t have access to the “best” (highest ranked) solution. Instead you will see random solutions from other users first. In that review process you are invited to comment on them and rank them up. This is a cool spirit and encourages you to really analyze and understand other solutions and not just to vote something up, simply because everyone else did so as well. They offer:

  • Online code editor (this one probably is not the prettiest, but it works perfectly fine)
  • Beautiful game-like island world of code exercises (quests) with different categories and in different difficulty levels (elementary | simple | moderate | challenging).
  • Very engaging random code review system.
  • You can level up and earn rewarding badges.
  • Activity log.
  • Forum.

TopCoder (SRMs)
(Java, C++, C#, VB.NET, Python)

TopCoder is an interesting concept. Their main site actually advertises software products/solutions that may be realized through crowdsourcing. So that companies don’t even have to hire someone for a certain project but offer their problem to the community. And who offers the best solution gets payed. Very interesting approach. If you go to the community section you can find the various challenges/jobs (design, programming, data science). I have not tried it out but you can earn real dollars on those.

What fits right into this list though are TopCoder’s SRMs (Single Round Matches). They are scheduled events, where coders can compete directly against each other. There are two ways to access the competition arena. Either through their WebArena (as of writing still in Beta) or you download a Java-applet. They describe it all here. Next to the event challenges there are also practice exercises available. Which is nice because there are only a few real events throughout the year. Let’s summarize:

  • Online code editor (in Beta) or Java-applet (15+ years old).
  • Events for coding competitions.
  • Practice exercises.
  • Real money “challenges”/jobs (design, code, data science)
  • Forum.
  • Leader board.

CodeChef
(multiple languages)

CodeChef is owned and maintained by an Indian software company. Here I have the least experience. Although it seems to be a quite popular site, the design looks a bit dated in my eyes. On the few exercises I’ve tried, you also had to read in the data from stdin (like Hacker Rank).

Big gotcha: When you just hit run, no data is supplied. All test data (before submission) have to be handed in manually through the custom input field. You wouldn’t believe how long I was puzzled with the input-error-message. Submission takes a bit long (at least on my network) and as far as I could see, the test inputs (on submission) are invisible to you, which makes debugging a bit hard.
What CodeChef provides.

  • Online code editor (code can also be uploaded as a file).
  • Practice challenges (Beginner, Easy, Medium, Hard).
  • Contests against other coders (scheduled throughout the year).
  • Forum, Blog, Wiki.

Exercism
(multiple languages)

Quite different than all the other sites and a fantastic concept.
Exercism let’s you choose from different language-tracks (you can follow as many as like). The exercises per track have to be solved consecutively. What is so fantastic is, that you can choose being mentored. That means, your solution first gets checked, commented and finally approved by a real person! This is by far the best learning method out of all the challenge sites.


Little caveat: as of writing, on some tracks there are just not enough mentors (they all mentor for free) which means you might wait a couple of days (or weeks on the RUST track) until you get a response or code clearance. If you’re interested you can also sign up as a mentor yourself.
They do not provide an online code editor. You have to download the exercises and all test files onto your machine and code in your favorite editor. How to do that is explained very detailed and helpful for every single language.
So Exercism offers:

  • Several language tracks.
  • Downloadable exercises.
  • Optional free mentoring for every exercise on every track!
  • Blog.
  • Option to become a mentor yourself.

CSSBattle
(CSS)

In times where CSS gets more and more important, this site is the perfect place to practice and compete. It works like this:
You get a square image which shows a variety of elements/shapes in different colors. Your task is to replicate the exact look of that square, with as little CSS as possible. FUN!
It does start out relatively easy but gets tricky very soon (at least for my CSS-skills).
As of writing, the site seems to be quite young and the developers add new features quite frequently. At the moment for example it is not possible to have a look at other solutions. Also the grading rules (which you can apply to achieve high scores) mostly make you write CSS, you wouldn’t want to write in real life. But who knows what might be added or changed in the future. I think this is a fantastic project.
CSS Battle offers:

  • Online code editor.
  • Leaderboard.
  • Community discussion channels.

If you know other engaging code challenge sites, let me know. Feel free to share this page on social media (and comment on it) or to send me an email.

sp├Ąters
niilz