Learning how to master a new programming language quickly is an essential skill to learn as a developer. Throughout your career you'll be forced to learn new technologies, maybe to get your first coding job, maybe you just want to learn something new, or you simply need to learn something to progress your career to another level. In today's post, I'm going to share my experiences trying to learn something new and share my secret tip that will help you learn whatever you want to in the quickest and most pain-free way possible.
From my attempts at learning new things, I used to have two main go-to learning approaches:
The first way is a classic, buy a book/online course on the chosen topic and then spend a few weeks/months with your nose burrowed learning everything about the topic. The problem with passive learning is that you tend to forget a lot of what you get told. Books are great for understanding concepts and theory, however, most books will also cover a load of material that you won't need. When you spend the majority of your time learning skills that you don't need, from my experience I always seemed to make minimal progress. I would buy some books on a new language, read all the theory and attempt to learn some stuff that I'd never need in my day-to-day role, but when it came to actual coding, I was still Google programming 90% of the time.
The second way to learn a new language is to roll your sleeves up and get your hands dirty. Most people tend to do this on the job, so they have a massive project they need to build and then commit to using some new framework/learning something already being used and jump in head first. I did this when I learned C# on the job and that was definitely a mistake. When you have some monumental task it's easy to get overwhelmed as you need to learn too much at the same time. It can be scary at the beginning of a new project if you decide to learn while writing production code, you generally need to learn too much in one go and if you're learning to a deadline then you won't give yourself any space to make mistakes. When you learn anything new you need to be able to make mistakes and throw away your work. You need to explore why certain ways of doing things are bad.
One of the most efficient ways to learn something new is threefold:
I don't think there's anything amazingly outlandish or controversial in those statements. So my recommendation when you want to learn something is to take on a 30-day challenge!
As the name implies, in a 30 days challenge you set yourself a series of code challenges that will take a minimum of an hour to complete. These challenges should be to build something useful, like a product page that displays the price from an API. In order to complete the task you'll need to figure out actual problems, you'll have a specific area of knowledge you'll need to learn so you don't get too overwhelmed by learning too much at the same time and, who knows, at the end of it you might even have something cool or useful that will benefit you.
When it comes to learning a new language you have a few options to help you master it. You can buy a book and read it, however, this will likely result in slow progress, as you won't take things in the same way you would by actually using it. You'll also likely learn a load of stuff you'll never have to use. The other approach is on the job learning. This is also non-optimal, as you don't give yourself any room to make mistakes, as soon as you finish a task you'll need to move, not having any time to reflect on if your code is any good! Learning on the job usually results in very late nights, working overtime and feeling overwhelmed.
Instead, I recommend that you set yourself a 30-day challenge. One night sit down and write a lit of 30 small coding challenges in a spreadsheet or word document. Then every day for a month you commit an hour and knock one off/get a far as you can. As it's all throwaway, who cares if you even finish it! I can honestly say I've done this myself and I learned so much more using this technique than reading, or just learning on the job, that I really recommend you try it out.If you agree with this approach and try it out, please share the challenges to help other people out.
Software Architect, Programmer and Technologist Jon Jones is founder and CEO of London-based tech firm Digital Prompt. He has been working in the field for nearly a decade, specializing in new technologies and technical solution research in the web business. A passionate blogger by heart , speaker & consultant from England.. always on the hunt for the next challenge