There are numerous ways to practice and improve your coding skills.

Here are some of them:

1) Solving common algorithmic problems

There are many web sites that list computer science problems like codechef, coderbyte and codibility. Most of them rate problems according to difficulty so as a beginner you can select some problems rated as easy. If you feel comfortable and can solve them without effort, you can switch to tougher problems until it becomes a challenge for you to solve them.

You can read more about this in this article

2) Solving common computer science problems – specifically related to data structures

In practice most of the data structures you will use as a professional will be given to you. You will simply call methods of objects that hide all the complexity of the data structure itself. So there are many professionals who use the data structures daily and do not know knowing exactly how they work. This is not a problem itself.

However, learning how to create these data structures in detail via code is a steep path that will not only help you understand better the programming language you use but also make better choices on how and when to use which data structure.

In order to begin, you simply need a good introductory book for data structures on the programming language of your choice. There are numerous of them. Just look at amazon and select one with at least 4 stars.

The language does not matter much.

You can read more about this in this article

3) Solving common computer science problems – specifically related to data mining , business analytics or artificial intelligence

This is not recommended for beginners.

But if you are familiar with data structures and you can create any data structure you want from scratch, the next step is data mining algorithms or artificial intelligence. The topics should not scare you. In reality, both data mining and artificial intelligence domains have many simple and relatively easy algorithms that you can try to implement. It will be harder but it is still very feasible, provided that you have understood how to choose and use the common data structures you have learned.

Note, though, that in most real situations you will not need to implement such algorithms. You will use libraries and frameworks to get the same result easier and faster.

You can read more about this in this article

4) Setting as a goal to obtain a related certification

Preparing for a certification will help you a lot if you are a beginner.

Whether you will actually obtain it, is mostly a career choice and not that important as you might think. It may or may not help you based on the circumstances and the rest of your CV.

However, the preparation itself for the certification will help you a lot.

Select a certification related to the programming language you want to learn. For example OCAJP and OCPJP are good certifications for a java developer. Likewise, MCSD can be a useful certification for C# developers and so on.

5) Watching videos on course market places like Udacity and Udemy

Udacity, Udemy, Khan Academy, Coursera offer courses on almost any subject you wish.

Occasionally, they offer many hours with great prices, so online courses is always an accessible and handy way via which you can improve your skills from home.

6) Participating in war games.

Wargames in overthewire have tasks to do to practice yours skills incrementally.