The Codewars Experience
Tags: programming, webdev, productivity, beginners
Published: 2023-03-16 14:41:15

## What is Codewars?
Codewars is a platform where you can practice your coding skills by attempting various problems in the languages of your choice. You will be given prompts with varying difficulties, and the way that you "solve" them is by passing all the pre-defined tests. 

You can test your code before submission against a couple of easy tests and then submit for a larger set of more obscure cases to make sure you have everything covered. The tests are great for debugging, and they give you space to try creating your own!

After you submit, you can examine what everyone else has come up with, and see where your implementation landed. Popular solutions will be labeled with "Best Practice" to highlight people who solved the code optimally and with solid programming techniques. "Clever" solutions solve the problem in creative ways, such as importing some library that solves the problem in a niche way. It's helpful to examine what others have done and see where you could've improved.

## My Experience
Codewars is a helpful practice tool. I've been doing Javascript and Python problems and it's finally helped me feel like I'm back into the engineering headspace.  Recently I have been starting my day by solving one or two just to get my brain warmed up, which has helped me establish a healthy morning habit.

After college, I was having a hard time just thinking of problems that I wanted to solve to get back into a problem-solving mindset. I wanted to turn back to the projects that I used back in school, but did I want to crack open that old laptop and try to understand what my college brain was doing? Plus, I think I lost the charger...

Codewars has helped me look at problems and try to solve them in creative ways. I usually start with a way that won't solve the problem optimally but establish a "good enough" understanding, and then implement a more efficient solution by researching. For example, if I know I need to iterate over something, my first solution would be to use a regular For loop. I can break it down in a traditional and readable manner, and then address how to optimize it after. When I have a solution passing some tests, I can go back and examine the loop to maybe incorporate List comprehension in the case of Python. Or in Javascript, try to utilize the map() method. This helps me learn how to examine my solutions for readability and implementation. Using this method I've gotten close to some of the one-line "Clever" solutions, and it feels really good to have implemented something efficiently. 

Doing these problems have led me to find some new websites that have become helpful resources, like [RealPython](https://realpython.com/) or [GeeksforGeeks](https://www.geeksforgeeks.org/), but also reinforced the obvious ones like [stackoverflow](https://stackoverflow.com/questions/1301346/what-is-the-meaning-of-single-and-double-underscore-before-an-object-name) and [w3schools](https://www.w3schools.com/js/default.asp). Each website has its way of explaining concepts and sometimes I found it easier to comprehend one site compared to the other. 

For example, I found w3schools explanation of [list comprehension](https://www.w3schools.com/python/python_lists_comprehension.asp)  a lot more concise and easier to understand than [GeeksforGeeks explanation](https://www.geeksforgeeks.org/python-list-comprehension/).
Both explain the same concept differently and it might change per person. In my case, I wanted a quick and dirty solution and mostly syntax, which I felt like w3schools provided, while g4g provided a lot of in-depth examples. If I wanted to take the time and dive a little deeper into the subject, I would definitely return there. 

Now I feel like I'm sharpening my programming skills as well as my research skills. So many resources can give a correct way to solve a problem, but sometimes you just need to cater the results in a way that makes the most sense to you. The more I practice that, the faster I can recognize what will be useful to me in the future, and save me time in the long run.

## Wrap-up
All of this to say, I think Codewars has been an awesome place to hone my skills in not only problem-solving but also research and selection. Being able to find the right documentation, at the right time is an invaluable skill, and also one that will never be fully perfected. New content and ways of thinking are always progressing, just recognizing where you are and what you want to learn are key to making that leap. 
I will be attending a hackathon soon and I'm really excited.

Have you had similar experiences in Codewars? Have you had a negative reaction? What other sites have you found impactful on your journey whether or not you're a beginner or an expert?

 If you're also interested in solving problems together, let's all collaborate and solve Codewars or project euler(next) together! Community and teamwork are extremely important in our field, so let's encourage each other! 
Comment down below and reach out!