As a self-taught software developer, I was always overwhelmed by the plethora of options available to teach myself how to code. I know, a tough problem to have! The issue with all these options is that it is difficult to tell what resources are worth spending the time on and which are not. Codewars does a lot of things well but it's far from perfect. This is why I wanted to write a Codewars review that focused on the benefits and drawbacks of the platform.
So if you want to find out if Codewars is worth spending your time on, this review is for you.
What Is Codewars?
So what is Codewars? Codewars is an online platform that presents its users with coding challenges called "kata". Kata is a Japanese term referring to a pattern of martial arts movements that are practised alone but can also be reviewed within groups. This definition holds true to the heart of Codewars, as users practice coding algorithms individually and are then exposed to their peers to review their code and be reviewed.
Codewars is a community-built platform, meaning its challenges are designed by its users. The challenges are ranked from 8 to 1 and get increasingly difficult the lower the kata number is. As of 2021, Codewars supports 29 core languages and 26 additional beta languages. Including the popular esoteric programming language, brainfuck! Good luck solving algorithm problems with that language. Seriously.
As users complete kata they rank up their profile. Making the game rather addictive. Codewars also provides features such as discussion forums, leaderboards and a wiki to learn more about the platform.
I want to start by talking about some of the benefits of Codewars since it does have its advantages.
1. Focused on Algorithms
The biggest benefit of using Codewars is that it is hyper-focused on algorithms. If your goal is to get very good at writing efficient programs, Codewars can be a great place to advance your skills.
Learning how to write efficient algorithms is incredibly important to become a good software developer. However, Codewars probably isn't the greatest place to start. It can be a bit intimidating if you have very basic or no knowledge of algorithms or programming syntax.
Alternatively, if you are looking to become amazing at writing algorithms, I highly recommend reading The Algorithm Design Manual by Steven S. Skiena instead. It gives a great high-level overview of many critical concepts and approaches in computer science. Which does so by giving a solid background in data structures and algorithms.
The book is purposefully challenging but written assuming no prior knowledge. If you are taking your studies seriously, it's a must-read!
Using that book as a basis (or any other foundational understanding), I think Codewars is a great resource to continue practicing and learning about algorithms.
2. Solution Comparisons
Another great aspect of Codewars is that they allow you to compare and analyze other users' solutions after you solve or fail a kata (coding challenge).
I found this aspect of Codewars incredibly helpful as a beginner coder. There were multiple instances when I would come across a problem and have absolutely no idea how to begin solving it.
By watching and understanding how others came to a solution really pushed me to understand how to think like a programmer. Not only this, but it also taught me that there are many ways to address a problem and that there is often a very elegant and (often) simple solution to even the most difficult problems.
3. High Language Support
Another great aspect of Codewars is that they support many programming languages. As I stated above, Codewars supports 29 core languages and 26 additional beta languages.
Since the platform is focused on Algorithms and not how specific languages work, it really doesn't matter what language you use. This means you can use whatever language you're most comfortable with to keep your focus on solving the problems, not learning the syntax.
Alternatively, the platform can also be a great way to learn a brand new language. By solving the easiest katas, you can focus less on problem-solving and more on understanding how to solve problems in a specific language.
If you're looking for a real challenge, no one is stopping you from solving the most difficult problems with a brand new language either. Not that I would ever recommend that.
4. Quick Set-up and Entertaining
Finally, Codewars is great because of its easy, already set-up environment that is as addictive as it is educational. It's as simple as signing in and starting to code. Coding is done within the browser and every challenge also has test code pre-written to check the quality of your solutions.
If you are the type of person to put off coding because of the hassle of setting up your development environment or only have an hour or so to practice, then Codewars can be a great way to squeeze some extra coding hours in!
Although Codewars certainly has its advantages, it also has its drawbacks. Let's dive into what makes Codewars a not-so-great platform.
1. Focused on Algorithms
Wait, being focused on algorithms is a bad thing? Well, yes. Although learning algorithms is a key part of becoming a great developer, it's far from the only thing.
If you are looking to work with a company, algorithms may be the key to passing the coding interview, but the employer will want to know that you can see software to completion, from start to finish. Not just solve algorithmic problems.
Not only this, but they are also much more concerned with knowing you can write clean code rather than writing complex one-liners. Which we will talk more about below.
2. Doesn't Promote Clean Code
The biggest benefit of Codewars is that you can see how others write their solutions. It's a shame that the added benefit is quickly lost when most top answers are complex one-liners that are equally as difficult to read as they were to write.
The platform (or its users) seems to promote this complex way of writing code that usually isn't promoted in a work environment.
What most professionals should believe is that code must be simple to read (or at least as easy as possible). It allows other developers to read and understand your code better and saves time and money on development costs.
I would be cautious of any work environment that promoted overly complex code. It's probably a pretty toxic work environment (just my two cents!).
If you are looking for a solid foundation on writing clean code, Clean Code: A Handbook of Agile Software Craftsmanship is a great book to learn the SOLID principles of Object-Oriented programming. I highly recommend it to any developer trying to better their code quality.
3. Not Beginner Friendly
I already mentioned this so I won't talk too much about it but Codewars is not a very beginner-friendly platform. I personally used this site when I first started writing code and I found it very challenging.
That being said, I certainly learned a lot from writing even the simplest Kata and would still recommend giving it a shot. The more difficult the problem is, the more you will learn from the experience. So take this drawback with a grain of salt!
As a side note, I still recommend checking out The Algorithm Design Manual by Steven S. Skiena if you're serious about learning your algorithms and don't have a formal background.
4. Bugs and Ambiguity In Kata
The final drawback with Codewars is that some of the problems are very ambiguous and unclear what they are asking. In some instances, I have also run into bugs with how the test code was written that make the challenges unsolvable.
This can be even more frustrating from a beginner's perspective. Not knowing that the issue is actually with the environment and not necessarily their code or thought processes.
I suppose this is just one of the drawbacks of having a platform built by a community with looser regulations instead of a single entity.
Overall, this drawback could be much worse and I wouldn't let this issue alone deter you from the platform.
Codewars Review: Is Codewars Worth It?
So, is Codewars worth it? Yes... but maybe not. Let me explain.
Is Codewars worth it for beginners?
From a beginner's perspective, Codewars can be challenging and may deter beginners because of the difficulty of the challenges. However, you are always going to have to solve complex problems as a developer and starting early isn't a bad idea.
The platform is challenging but gives an opportunity for growth for developers of every skill level. Even beginners. Just remember that algorithms aren't the only thing that makes a great developer. It's important to spend time building real projects and practicing clean coding practices.
Is Codewars worth it for self-taught developers?
For self-taught developers, Codewars can be a great resource if you have little to no algorithm experience (which is a reality for most of us).
However, as I have mentioned throughout the article, you should really supplement your knowledge with a good algorithm book as well.
Is Codewars worth it to find a job?
I think this is an interesting question. Nothing beats real-world experience when it comes to finding a good job. However, I do not think it's a terrible idea to mention your kata rank in your resume. Assuming you rank highly (preferably top ranking).
Mentioning this within a resume shows you are driven to solve problems on your own and that you excel at it. It's a good filler, just don't expect it to play a large role in finding a job!
Is Codewars worth it to become a better developer?
This is what you should ultimately be asking yourself. Is Codewars going to make me a better developer?
In short, yes it can help make you a better developer. However, I would caution anyways spending a lot of time on Codewars. Since their time could probably be better utilized in other domains.
You will learn a lot more about how to build great software by building your own projects and looking things up as you go. As well as reading documentation, books by respected authors and attending tech talks. Not by only solving kata's on Codewars.
However, I think Codewars can still play a role in growing as a developer. It allows you to exercise your problem-solving skills in a fun and engaging manner. Which should really be what it's all about!
So that's pretty much everything you need to know about Codewars. If you are a new developer and don't know where to start your journey besides the Codewars platform, check out this article on becoming a Full-stack developer. Regardless of whether you want to work on the front or the backend. It's important to have an understanding of how both fit together. It also provides some great learning resources.