Having trouble getting started on learning a new skill?

Working on the same kind of project with the same old technologies you’ve already mastered is easy and comfortable. You’ve been telling yourself that you should move on to a more modern web development stack or learn a new library for a while, but you’re having trouble just getting started. It’s easier to dream about how cool it would be to learn that skill, or to keep debating which skill to learn next. Meanwhile, your pile of brand-new books is starting to collect dust…

Most people go through this phase when it’s hard to start moving at one point or another in their life. I wrote previously about planning your learning, and I believe it’s important to know where you want to go. But on the other hand, sometimes you have to roll up your sleeves and just do it. I don’t believe in waiting forever and leaving a ton of ideas pile up on my bucket list. If something is really important to you, you need to find a way to learn it right now and not when you magically have more free time.

Just do it!

When you feel stuck, the best strategy is to just throw yourself in it and get started on learn that new skill you wanted to master. Just pick a book, a course or a small project and get going to build momentum, even if you feel like you suck at first. The planning can come in later once you’ve broken the ice. You can’t learn everything for book and lectures: as an avid reader, I’m very familiar with the drive to collect a lot of information before getting started, but you need to avoid paralysis by analysis.

Give yourself no choice to learn: volunteer for those new projects at work, start a new project with a friend or share it with the world. Even if it’s not exactly what you wanted to learn, you’ll get into the habit of regularly learning new things, and you can use this to learn skills that are more important to you.

If volunteering for large projects using skills you don’t master yet is uncomfortable to you, start with smaller steps. You can instead volunteer to fix a small bug in an area of the software you’re unfamiliar with, or try to improve your own tools and procedures. You’ll grow more confident and you’ll be able to tackle larger and more impressive learning challenges with time.

Prioritizing your goal

If you don’t have the chance to learn new skills at work, you need to find the time to do it during your limited free time. Even if you want to learn many skills, you can’t work on all your goals at the same time, scattering your time and energy on too many pursuits.

Adding sometime new to your schedule requires prioritizing it over other commitments and habits. You can do a lot with only a little bit of time every day, but you need to find it. Maybe you’ll be more quiet on social media for a while, or will need to give up some gaming time or nights out for your project. Take a deep look at your current routine to see where you could find a bit of extra time.

This strategy is best used on goals that really matter to you, otherwise they’ll be hard to prioritize. There are many skills on my bucket list that I know I’ll need to learn at some point, but those are not a priority at the moment. I pushed them aside since I can always learn them later, or as it becomes an emergency. As you grow more confident in your ability to learn, you’ll be less worried about having to learn some skills just in time, and you’ll be able to focus on skills that bring in more long-term benefits. Just make sure you keep learning once so you don’t have to start over and get the learning habit going again.

Subscribe now to receive my 5 Hacks to Learn New Skills email course directly in your inbox. You’ll also receive weekly updates about learning and growing as a software developer.

Controlling your novelty-seeking behavior

Getting started with a new technology is always exciting. You see all the things that it does right, unlike your current tools. The tutorial is fun, you have new toys to play with and you’re looking forward to cracking open that book or course. The first wins come in fast, giving you a rush of confidence and boosting your ego.

Unfortunately, since you don’t have any experience using that technology on a large, demanding project, you don’t see its flaw yet. If you have a more severe case of novelty-seeking behaviour, chances are that as soon as things get tough you’ll have switched to the next technology anyway for your new project, leaving a large pile of technical debt in your wake.

How do you break this cycle and focus on mastering technologies instead of just skimming?

You have to become a finisher: someone who has realistic goals and a habit of finishing what they start. Finishing projects is a habit like any other and can be trained. But to have a chance to be a good finisher, you need to know where you are going. If you know what is the specialization you want to focus on and what you wish to learn from your current project, you won’t wander aimlessly from technology to technology.

Also, you need to start each project with a deadline and a clear objective or you won’t be able to tell when it’s finished. If you get into the habit of escaping every time things get too hard or stopping projects before you reached your goal, you’ll start thinking that giving up is inevitable.

Becoming a better finisher doesn’t mean that you can’t leave space for experimentation and fun. Curiosity has an important place in learning and helping you discover new things, and playing with new technologies can give you ideas to improve what you’re working on. But if you want to go forward, the majority of what you learn should be hard skills that help you get better at subjects that matters to you.

On the other hand, it’s unwise to finish projects at all cost: if some goals were unrealistic, or you started a course or a book that did not live up to your expectations, it’s a good thing to move on to something that will help you learn better.

Developing your skills also requires getting comfortable with delayed gratification. You need to accumulate many small wins in the same field to reach mastery, even if those wins are not as immediately visible as adding a whole new skill to your resume.

When you start out with a skill, wins comes in quickly since everything is new. As time goes on, you’ll need to work harder since you’ve understood the basis and you’re often using familiar concepts. If you’re moving frequently to new technologies seeking those quick wins, you’ll start over and erase a good part of your progress each time.

Finally, you have to get used to working hard mentally and focusing on a subject. You probably won’t understand everything the first time and will have to absorb the concepts of a new technology or pattern over many learning sessions. It’s normal to feel dumb and struggle many times when you’re really learning, but it’s worth it in the end. You’ll be a better software developer for it.

Every programmer is self-taught

There are many ways to become a programmer beside getting a computer science degree. If you’re on that less conventional path, you may be wondering what you should do to catch up to people who do have a degree. How can you compete with someone who spent many years in a classwork learning about computers and programming?

In my experience, there is no such competition: what matters is what you can do with the skills you have. There are various paths to becoming a developer. In fact, nobody learns how to be a web developer or an Android developer from school, except maybe at bootcamps.

Everybody working with those technologies is largely self-taught and improve on the job and during their free time. I took many classes related to computers during my electric engineering degree, but few of them featured web development specifically. Maybe you’ll get a class or two or an elective on these subjects, but this knowledge will most likely be outdated by the time you use it.

Well, if a degree does not teach you a specific niche like web programming or mobile development, what does it teach you? The role of a degree is to make you a generalist with a broad array of programming and computer-related knowledge. You’ll learn more about subjects such as maths, databases, algorithms, networking, programming patterns and languages.

You won’t be an expert in any of those subjects: you’ll know that they exist, but you will need to perfect these skills and use them in the real world for them to be really useful. On the other hand, all those skills are a useful toolbox you can dig in when you start a project and need to solve new problems. You can use what you learned as a starting point to go deeper and improve your knowledge as needed.

If you didn’t learn this at school, nobody is stopping you from acquiring this knowledge in other ways, such as online classes or books. There is nothing different about the knowledge you get at school: the focus on learning makes it easier to progress at school , but you can learn by yourself.

Those skills will really stick when you start using them to complete real projects. You’ll start specializing a few areas based on your interests, your job or a deliberate plan and grow from there. You’ll be part of a team where everybody has a different mix of skill and knowledge to build on. It would be boring and ineffective if everybody had exactly the same background!

What you learn in school is incomplete anyway. You’ll work on tiny projects to master specific concepts, but in real life you don’t stop after you shipped the first version. You’ll learn how to handle maintenance, bug fixes, deployment and how to work with a team across many disciplines. You will keep learning new skills for every project you start working on and every bug you fix.

What’s important is learning how to learn so you can always catch up on a subject or a new technology as needed. It’s easier if you keep learning a bit all the time and build a habit to learn, but it’s never too late.