If you are looking for ways to learn a new programming language or framework, here are my 5 suggestions:
1. Online video courses
Many people learn better from watching and following along with videos. There are lots of sites out there these days which offer video courses for learning technical topics such as a new programming language.
The benefits of learning by video is that you can pause the video whilst you follow along with the exercises, you can rewind if you didn't understand it and want to hear it again. You get to hear what they are saying and also see their code on the screen.
One of the most popular video learning sites is Pluralsight. They have over 5,000 online courses for you to choose from. There is a good search tool on the site to help you find the topic/course you need.
There are many programming languages to learn on there like Javascript, C#, Python, Node.js, C++, Ruby and Java. There are also hundreds of videos about different frameworks like .NET, Ionic, jQuery, Node, React, Ember, Aurelia, Xamarin and many more.
The good thing about Pluralsight is that you get a 10 day free trial, so you get to see what it's like to learn by video course without paying anything out. I recommend you give it a try, even if you don't think you would learn well that way, you might be surprised.
2. Books
Books are an excellent way to learn, and with tablets, kindles and smart phones these days, they are more accessible than ever. One advantage they have over the online videos is that they can be saved to your device, so you can be learning even when you are lying on a beach somewhere, or on a plane.
The other good thing about books these days on smart devices is that you can search for key words easily. When I'm learning from reading a book, I find I'm not always too interested in the history of the topic so I skip those sections and get to the main part of the book.
3. In person courses
You can learn a programming language in a short space of time by attending in person courses, or going to boot camps. This is a great way to get a good understanding of the topic because you can ask the teacher questions there and then, which is not possible in videos or books.
Before I got my first job as a Software Engineer, I had been learning about ASP.NET and C# in my own time. I had watched video tutorials and skimmed through books, but it wasn't until I attended some properly structured, in person, courses that I really started to learn. If you or your boss can afford this, I highly recommend it.
4. Puzzles and problem solving
A good way to learn a new language is to take part in online puzzles like Project Euler. You have small challenges you need to complete, which is ideal for trying out a new language to create the solution for solving the puzzle.
Have a read of my blog post about Project Euler to find out more.
5. Find a mentor
Go to meetups, or ask your colleagues/friends, who are competent in a the language or framework, to teach and mentor you. You will both find it a positive experience. I enjoying sharing knowledge with others and it isn't until I try to teach a concept to someone else, that I really learn about that topic. It makes me research the topic more to find answers to questions I hadn't thought about yet.
It is good to learn from someone else who can tell you about the pitfalls and quirks of the language/framework. Perhaps you could start a project together where you do most of the leg work and the mentor guides you through it, teaching you what you need to know along the way.
I hope you found this post useful and it has given you some food for thought. You can try all of the methods and see which works out for you. Please comment below if this post has helped you or if you can think of other good ways to learn.