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.

Amazon has thousands of great books out there for learning programming languages or frameworks, like C# in Depth by Jon Skeet or Head First JavaScript Programming
With Amazon, you get to preview inside the books so you get to read a few pages to help you decide if this is the book for you. Most books are available in physical and kindle version too.

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.

Paul Seal

Umbraco MVP and .NET Web Developer from Derby (UK) who specialises in building Content Management System (CMS) websites using MVC with Umbraco as a framework. Paul is passionate about web development and programming as a whole. Apart from when he's with his wife and son, if he's not writing code, he's thinking about it or listening to a podcast about it.

Proudly sponsored by

Moriyama

  • Moriyama build, support and deploy Umbraco, Azure and ASP.NET websites and applications.
AppVeyor

  • CI/CD service for Windows, Linux and macOS
  • Build, test, deploy your apps faster, on any platform.
elmah.io

  • elmah.io is the easy error logging and uptime monitoring service for .NET.
  • Take back control of your errors with support for all .NET web and logging frameworks.
uSync Complete

  • uSync.Complete gives you all the uSync packages, allowing you to completely control how your Umbraco settings, content and media is stored, transferred and managed across all your Umbraco Installations.
uSkinned

  • More than a theme for Umbraco CMS, take full control of your content and design with a feature-rich, award-nominated & content editor focused website platform.
UmbHost

  • Affordable, Geo-Redundant, Umbraco hosting which gives back to the community by sponsoring an Umbraco Open Source Developer with each hosting package sold.