Before learning or practicing any skills, you should ponder on the following questions:
“What is my learning goal?”
“How do I evaluate my current knowledge?”
“How do I learn best? What is my learning style?”
The best way to set up your goals and achieve them is to follow the SMART methodology that stands for Specific, Measurable, Achievable, Relevant, and Time-bound. That will help you determine the direction to move to and will help you choose means to reach your goal in an efficient way.
Gaining insights on where you currently stand will help you realistically look at available options for learning programming languages and understand which option you should go to.
As for the learning style, some of them include (but not limited to) visual, auditory, verbal, mathematical. You might also benefit more from learning alone, or together with someone in a team.
Depending on how you determine your goals and define your learning style, you will have to choose a way to upgrade your skills that suits you best.
Codeacademy is one of few platforms where you actually learn by doing. If you get frustrated with reading books and blog posts because you don’t see any results, Codeacademy is your go-to option, as you’ll be constantly creating lines of code and getting instant feedback.
Take personalized interactive courses and solve hands-on challenges with Pluralsight
Come up with an idea of a website or application
If courses don’t seem to be right up your alley, think of upgrading your skills independently, by creating your own app. I used this method myself and created a weather forecast aggregator back in the day.
Contribute to some open-source project on GitHub
Considering that Github is the biggest development platform, it’s no surprise that you can use it to your advantage when practicing programming language skills. Look for an open-source project and take an active part in development!
Apply for an internship at some software development companies
I know that some junior developers are afraid as hell of applying for internships. The reason behind that is they want to master their skills and only then look for a job. I think this approach is totally wrong because you can already improve and master your skills on real-life projects, with real-life teams and clients if you get to become an intern. There’s nothing to lose.
Learning can be hard and puzzling. I highly recommend you to start actively engaging in projects and creating something of your own. Also, start learning how to deal with web hosting companies.
By the way, as a way of practicing too, I often contribute to writing tech articles
for the company I work for. There are lots of ideas on how to create a specific app, or how to solve tech challenges that might help.