Lately I’ve been taking a keen interest in the idea of writing code and getting better at it, and what I mean by this is not just the fact of writing code itself and making it work, but also improving your coding skills, and the way you code.

When we write code we tend to concentrate on the code itself, on solving the problem, not necessarily on the way we produce that code, let alone how we navigate it…one can always use the mouse right? If you are working professionally in a project you don’t always have the time to think about the way you write code. Writing it, making it work and getting it accepted (only clean code should have the privilege of reaching the main development line) is enough of a challenge.

So, what then? Well, you could have a pet project, which could give you the time to take a step back, reflect, think about how you are producing code. This could indeed work, the challenge is to have an idea to get you started and keep you motivated to continue. It is for sure a way to improve your craft, but we could do even better than that. Code Katas for the win!

A Kata is, according to Wikipedia

a detailed choreographed pattern of martial arts movements made to be practised alone, and within groups and in unison when training".

A Code Kata tries to bring the element of practice to the software development. It’s when/where you practice the skill you want to acquire or improve.

If you want to take a deeper dive into this, check this book by Emily Bache, where you can find more on code katas, the notion of coding dojo und much more. Do not forget to check the GH repository, for some refactoring katas, that you could do - multiple programming languages supported.

You want to practice on your own or in a group, check this site!

The idea is that by doing katas you get to hon your coding skills, and pretty much everything else related to this that you want to improve, navigating and editing a text file, getting better and faster at writing code, writing more professional (clean-)code, learning an IDE, or some other text editing tool, like vim. The possibilities are unlimited.

Another point worth mentioning is that you can also take on some more difficult tasks, like algorithmic problem solving, and improve your problem solving skills, brushing upon those algorithms you have probably not used anymore since college/university, learning new ones, getting reads for a technical interview for top companies and so on.

Have a look at these links (there are many more out there, just google coding challenges) and give it a try:

Another resource worth mentioning, which I totally love, is JetBrains Academy. You can become a fully fledged Java Developer by taking the Java Developer track. They also offer similar tracks for Python and Kotlin. The best of it is that you can learn to program by creating working applications. You also get daily challenges which bring you points also known as gems, which you then can spend. Overall is a wonderful experience, one you should not miss.

As you can see, there are tons of resources to get you going as a programmer or to help you improve as one, you just have to dedicate time to it and to practice, because, as we all know, practice makes perfect!

Now, go and sharpen your skills and do not be afraid to experiment and learn new things!