Lifelong learning: Codewars

2016, Jul 31    

We have so many tools to develop ourselves today that is unlikely to use each of them even once a week. I’ve decided to launch a new series here and it will be related to the process I’m pretty sure you’re familiar with: lifelong learning. This term is quite self-explanatory, but if you’re not sure what does it mean I suggest you to at least take a look on lifelong learning Wikipedia explanation. The first sentence there actually does the job:

"Ongoing, voluntary, and self-motivated pursuit of knowledge for either personal or professional reasons."

As I’ve mentioned we have tons of tools and resources to help us grow and I personally tried and still use some of them. I use Duolingo for languages (not the programming ones! I have 339 days streak in Spanish today!), I renew my CodeSchool subscription from time to time (last week I’ve done that to see their React course), I spend some time on Codewars, I dived into edX resources some time ago, I explored the content of Codecademy and so on, and so on. Of course - these are the online resources, but the screen is not my siamese brother so I also read some papers and even wrote a post about the books I think every ruby/rails dev should read. Reading is obviously a part of the lifelong learning process, so don’t forget about the traditional paper books. Anyway, today I’ll share with you my thoughts about Codewars - a place where you can try yourself with some real-world coding challenges.

The Idea

The idea behind Codewars, according to their homepage, is to Improve your skills by training with others on real code challenges. And that’s actually the point. You can simply pick up a Kata, and start solving it with the language of your choice. Kata is a single task to solve and believe me - there’s a lot of them. Katas are created by the other Warriors (users) and this is the thing I like very much about Codewars. Imagine that you have a single task to be done in your app. After you figure out the solution you can simply publish a Kata on Codewars and explore the solutions of the others comparing it with your idea. It’s a great way to learn how the things you’re dealing with can be solved in different ways. I am not talking about building an entire app based on someone else’s code. Treat it just like a possibility to take a look at the various ideas to solve the problems you’re facing. There are always several ways to achieve the same result when you code.

Languages

Codewars is expanding all the time by adding new languages, today they offer Ruby, JavaScript, Java, Elixir, Haskell, Python, CoffeeScript, C++, C#, Clojure, TypeScript, Dart (Beta) and PHP (Beta), so I’m pretty sure you’ll find something for yourself. Can’t find any language for you? Be patient, if you’re not coding in Brainfuck, there’s a chance the language of your choice will be available there soon. Maybe even Brainfuck will, who knows?

Challenges

Codewars challenges are grouped depending on the language and the difficulty. The easiest challenges are the ones marked as 8kyu, the most difficult have 1kyu label. When you publish a Kata it starts in the Beta status, each time a user (with a min. 50 points of honor) solve the challenge, he/she is able to grade the difficulty on the scale 1-8. When the Kata has at least 5 user approvals it’s then reviewed by the moderator and either accepted or not. If yes - it’s published as a normal Kata with the specified level of difficulty. There is also another option to code on Codewars and it’s called Kumite. You can think of Kumite as a kind of more complex Kata, where you can spar with other Warriors by enhancing, refactoring and translating the task to another language.

Pros

Here’s a list of the most important things for me at Codewars:

  • You have to actually solve the problem published by someone else and it’s quite a real-world situation
  • You can compare your solutions with the other, more advanced and experienced users
  • Katas are translated to the other languages, what makes a great possibility to learn some new stuff
  • You can use the code stored on Codewars somehow in your future projects
  • You compete with the others by collecting the points
  • It’s free!

Cons

  • The ranking system is sometimes confusing
  • Poor internet connection make code submission almost impossible due to timeouts
  • When a Beta Kata is solved by more advanced users, then its grade is not accurate when compared to another Katas.

Wrap up

I definitely recommend Codewars as a way to improve your coding skills. It’s sometimes a funny experience when you deal with a task and produce a complex 20 lines solution and after submitting your final answer you see the same problem wrapped up in a one-liner. Of course, language-specific features are not always the best solution in the production code, as it’s usually hard to understand. However - it’s always a good thing to know the alternatives.

And one more thing: if you want to sign up for Codewars you can use my referral link - I do not earn money for that, so I can’t share it with you, but we can form a clan and fight together!