If you want to master the big things, you need to become a master of the small things. This idea can fit in the programming world perfectly. If you are diving into the Cloud, such as AWS, or GCP, or you are trying to become an architect you definitely need to have a proficient knowledge of data structures, and algorithms.
I was thinking about this idea for some time, and that’s why I started looking for defined ways, and roadmaps to challenge myself. I found 2 good solutions to make it: Codewars and LeetCode.
I had been nailing one of them for 5 months. Let’s check what I’ve achieved in this direction.
What is the best tool? Codewars or LeetCode?
The short answer is: if you don’t want to pay for the service (LeetCode is not a free tool), then choose Codewars. It is free, it has a huge language list and a big database of challenges. If you can spare $35 per month, then choose the LeetCode.
My personal choice was exactly this one. I’ve spent 5 months solving 1-2 JavaScript challenges per day and I even solved some SQL and Python challenges along the road. At this moment I have 4 kyu and 208 solved riddles. I can say that now I’m not scared of using different data type methods, JavaScript core elements, and structures in my everyday life.

Was it hard? Sometimes yes, sometimes not. The main benefit of Codewars was to master the basic data types, and data type methods and to touch on some concepts such as currying and recursion. At some point I became bored, so I started to look into the LeetCode and the options that it offers. When I registered there everything fell into place. LeetCode was a way better tool.
Why is LeetCode better?
It is not just a list of riddles with one solution and a comments section. It is a service for learning data structures and algorithms.
It has a Problems page with challenges that are split into Easy, Medium, and Hard categories. Please, don’t be misled by the word Easy, because it is not as easy as you think. Each problem is a representation of a particular data structure or/and ways to manipulate it with some well-known algorithms.

Then you have the Explore section with serious topics explained, such as Dynamic Programming, System Design, Arrays, Graph Trees, Heaps, and other types of things. In these chapters you will study, with a detailed explanation of the particular area and some non-trivial tasks to do.

LeetCode is helping me to cover a sometimes blurry area of System Design, or to understand well-known algorithms and their use cases. Codewars is not any close to it.
Am I capable of learning these tough programming concepts?
This was my first question as well. To my mind, you definitely can. If you don’t know about a particular concept or its common practices, you should be a genius to solve hard algorithmic problems related to it. I’m not thinking about myself as a prodigy, and I guess you too. That’s why I need to study them and then I will be able to use them.
How much time do I need to spend on the Leetcode?
I guess solving 1-2 riddles per day will be enough to become proficient within 5-6 months. Yes, this is a long-term goal and you should not expect low fruit hanging there.
Recap
If you want to improve your coding skills effectively, I would recommend you to use LeetCode. I see some comments on LeetCode dated 2019, and I’m really regretting that I haven’t started in 2019, but only in 2022. Good luck!