My 3 steps process to learn new skills as a software developer

In my previous posts, I wrote about mapping your current skills, and using this knowledge to decide which skill you should learn next as a software developer.

Once you’ve went through this, you should have found a few skills that are really worth investing your time and energy into, and have a good idea why you want to learn them. On the other hand, those skills are still very general and won’t help you figure out what should be your next step. How to you break down a complex subject so you can work on it and learn something useful? What is the most productive way to get started? Here is my 3 steps process to get a solid understanding of any new skill you wish to learn.

learningpyramid

Exploring

To get started, you must first get an high level overview of the skill you wish to learn more about and get familiar with it. Get the big picture by listening to a few podcasts or recorded conference talk that presents general information on your skill of choice, or skim a book or two.

Learn more about the community and culture around it and find the blogs and other places where people hang out to immerse yourself in the subject. You don’t need to understand everything at this point: you just want to get familiar with the vocabulary and the major moving parts involved.

You should also start playing around with the technology to understand better what people are talking about. Do the setup right now, complete the newbie tutorial and play around just to get a feel for the technology and have a few quick wins. If you’re already ready to get started, it will be one less thing standing in your way when you have a better idea where you’re going.

Planning

You should be familiar enough with the subject and what it involves at this point to know what are the most interesting parts. You can now make a plan detailing what you wish to learn to reach the original goal you had for learning this skill. Most subjects are too big to take in all at once, so you’ll need to break it down in many smaller parts.

This is where your exploration comes in handy. Using your new knowledge and the resources you found, write down a list of specific skills you wish to learn related to the main skill. This list will include specific actions: with each skill, you need to write down how you plan to learn it and put it into practice. In some case it will be working through a specific resources like a book a video course or a tutorial, but in other cases it may involve a small project. For example, the last skill I learned about was creating a small application with Ruby on Rails, and I completed the tutorial at https://www.railstutorial.org/ to achieve this goal.

Don’t be too worried about narrowing down the subject : most subjects worth learning are a combination of many things. What’s important is that the parts are actionable and small enough to be completed in a reasonable time. You don’t want to have to slog through a huge goal, or you’ll eventually lose your focus.

Focusing

Now it’s the time to really put your head down and bring one of the project you planned in the previous step to completion, learning as many things as you can as you go along. Focus is important at this point: you time is limited, so you’ll make the most of it by tackling only one skill at once and understanding it properly before moving on.

The best way to focus on projects and actually complete them is to build an habit of continuous learning. If you want to keep growing and improving as a software developer, slow and steady wins the race. Motivation is fickle and will fail you. It will give you a quick burst of learning which will be fun and rewarding in the short term. Unfortunately, those bursts will be followed by long periods of not learning as your attention get caught by something else. I wrote a detailed post about creating good habits to learn here: https://cindypotvin.com/maintain-habit-learn-coding-skills/.

While you’re working, make sure you stay mindful and understand what you’re doing the best you can. You can get things working by copy-pasting code, but you won’t really learn about what is going if you don’t take your time. You’re not cranking out widgets: the best use of your time is learning and understanding, even if you stay stuck and have some unproductive sessions. You’ll get better at getting unstuck with practice and have more confidence that you’ll figure it out.