Throwback to January 2016 - it's been about one and a half years since I first learnt how to code websites and simple games using HTML5 + CSS3 + JS thanks to BSD Academy. I would create simple projects every once on a while such as a 60 second multiplication game powered by client-side JS or a simple Merry Christmas webpage with background music, as well as constantly searching the Web for related topics and information. However, despite my ability to create simple projects, my knowledge of algorithms and data structures were next to nothing - I wasn't even aware of basic problem-solving techniques such as recursion or that you could append elements to a JS array using
Array.prototype.reduce within a very short timeframe. Even after those initial two to three months, Codewars continued to be an integral part of my daily routine and I kept on learning new topics such as recursion and linked lists through completing related challenges. Within just half a year of joining Codewars, I went from a complete n00b in problem solving and algorithmic thinking to a "proficient" programmer (defined as in the
1-2 kyu range). So, what advantages does Codewars offer over similar platforms such as CodinGame, Hackerrank and Leetcode?
First of all, the content on Codewars is plentiful and widely varied. Some Kata focus on language-specific features or certain popular frameworks/libraries/etc. such as React. Other Kata may focus on typical Computer Science topics such as linked lists, binary trees, recursion, memoization and compiler theory. Yet other Kata place a strong emphasis on mathematics and formal theorem proving. Even for similar topics, the difficulty of Kata can vary wildly - for example, some math Kata are as simple as "find the sum of the first
n natural numbers" (in constant time or otherwise) while others may require you to prove the commutativity of addition of natural numbers (a Kata that I'm currently stuck on) or solve the Fabérge Easter Egg problem in linear time. In contrast, other similar platforms such as Hackerrank or Leetcode may place a stronger emphasis on competitive programming and/or algorithmic thinking.
Another unique feature of Codewars is that it is almost entirely community-driven - any member of the community with sufficient honor points can create their own code challenges (aka Kata) and publish them. The Kata then enters the beta phase where other community members get to try it out, vote on it and provide feedback. Then, if/when the Kata is considered to be of sufficient quality, a moderator (someone automatically assigned the role once he/she reaches a certain honor level) can approve it and the Kata leaves the Beta phase - it officially becomes a Kata on the site that everyone can train on and gain rank progress. In contrast, certain similar platforms may not allow the community to create new content on their site and even other community-driven platforms such as CodinGame may have certain restrictions as to which type of content can be created by the community.
In conclusion, Codewars is a great site for programmers of all abilities and backgrounds to train on code challenges and improve their programming skills which also offers multiple advantages over similar (rival) services.