How To Learn New Skills As A Developer: A Framework
Tags: career, codenewbie, programming, webdev
Published: 2022-03-10 12:20:23

A conversation in my favourite developer Slack the other day inspired this post 😀 

Learning new skills as a developer is a key skill to have, and while you are a junior developer it’s a great time to “learn how to learn” new skills. Learning skills like:

- new programming languages
- new frameworks
- new technologies

is something you will need to do on a regular basis throughout your software developer career. Being able to learn new skills will help unlock pay rises, promotions and work on exciting projects.

The problem is that you can’t always take the same approach you did when you first learnt to code. Learning to code is a very “bottom up” learning activity. You need to learn fundamental concepts and spend a long time working though difficult and challenging things. This is why learning to code is So. Time. Consuming. Taking many months or even years.

You can’t set aside that amount of time whenever you need to learn a new framework or programming language. You need a quicker way to learn, something called “top down” learning. This is where you skim a topic to get a feel for it and then dive into the specific areas you need to learn whilst also working with it in an active project.

To achieve this, you need a framework! 

This framework is designed to help you learn new software developer skills, it is not designed to help you learn how to code. If you don’t yet know how to code then you need a different approach to actually learn how to code.

## Learn new skills framework
Here’s a tried and tested way for software developers to learn new skills:

1. Find a video explaining the concept.
2. Go through it at 2x speed to understand the broad 50,000 ft view. Take notes on things you don’t understand and draw parallels to things you do understand from previous learnings.
3. Take a look at the docs and skim through those, seeing if there’s any deviation from the video to make sure the video you watched was accurate.
4. Now that you have an all encompassing view of the subject, with notes about things you don’t understand, you can start diving into the subtopics until you’re comfortable with your level of understanding.
5. Take as much or as little time as you need to at this stage. Dive into the theory or reasoning behind why choices are made to the level that you feel you need. If you are only lightly working with something you may not need to go too deep, but if the skill is going make up a core part of your work then taking the time to go deeper, and understand the fundamentals is important.
6. Start to build something as early as possible, if they have a quick start project then spin that up. If you have a project you have inherited from another developer then start poking around with that by changing things and seeing what breaks. Start to mesh the theory you are learning, with the practical applications of the code you have in front of you.
7. As you start to gain more comfort with the project and the code you are dealing with, you can determine the best way to be guided. You can either methodically work through the documentation/learning plan or you can be guided by the project you are making and problems as they arise.

## If you get stuck learning a new software developer skill
If you get stuck when learning a new software skill or feel like you aren’t making any progress, then don’t force it. Sometimes you need to switch learning paths and have another go. This is perfectly natural so don’t let it demotivate you.

When learning a really big topic, or something quite different, then taking a more foundational approach can be quicker in the long run. For instance, if you have learnt JavaScript and suddenly find yourself needing to learn Rust, then a top down approach is going to be challenging because there are so many new concepts in learning Rust that you just won’t have covered in with JavaScript.

The trick is knowing if you are making progress or if you are spinning your wheels. This is why it’s important to have a project in active development when learning a new software developer skill. That way you can see the progress you are making and avoid getting stuck in tutorial hell instead of actually learning a new skill as a software developer.

Get more developer career advice like this by joining [my mailing list at Career Switch To Coding](https://careerswitchtocoding.com/).

Finally, A special thanks to Sean for providing the inspiration to this post, he’s awesome and you should go follow him on [Twitter](https://twitter.com/AtSeansHandle).