The following is an excerpt from The Complete Software Developer's Career Guide by John Sonmez. To get the entire book delivered to your inbox, go here.
For software developers, learning is a journey, not a destination. You will always be able to get better --- if you choose to. I've spent plenty of time developing my technical skills the wrong way. However, I've also learned how to develop technical skills at a lightning fast speed and to teach others at the same time. After all, I created over 50 highly technical developer training courses on Pluralsight over a period of about three years.
I used to think the best way to learn a technical skill was to take a big reference book and read it cover-to-cover.
Back then, I read too many 800+ page books to count and didn't benefit much from the exercise; although my arms might have grown from carrying around books of that size.
I don't want you to make the same mistakes I did, and if you already have, I want to show you a better way.
Learning How to Learn Quickly
Before we get into the specifics about learning technical skills, I think it's worth taking a second to talk about learning anything quickly and teaching yourself in general.
As I mentioned, I spent a large amount of time both learning and teaching various technologies.
I learned whole programming languages in a matter of weeks and then turned around and taught courses on them.
During that process, I developed a reliable system for learning just about anything I needed to learn.
This wasn't so much a conscious effort as it was a necessity. I was trying to learn at such a rapid rate that I had to come up with efficient ways of doing things, and naturally, patterns of learning developed which helped me to become faster and faster.
Here's how it works.
The Basic Process
The basic idea is pretty simple.
Essentially, you want to first get a good idea of what you are learning and what the scope of it is.
You need to get enough information about your subject to understand the big picture and narrow the subject down to a small enough scope that you can actually tackle it and wrap your head around it in a realistic amount of time.
Then, you need a goal. You need to establish what it is you are trying to learn and why and, most importantly, what metric you will use to know that you've learned it.
Far too many people set out to learn something but have no way to measure whether they have succeeded or not.
Equipped with that starting point, you can start to gather some resources for learning.
I recommend not just reading one book cover-to-cover but to instead gather multiple resources, which may include books, blogs, podcasts, magazines, video courses and tutorials, expert opinions, etc.
Then, you are going to use some of those resources to create an actual plan for learning.
You are basically going to figure out in what order to learn everything you need to know about your topic.
Then, you dive in. From your learning plan, start with each module you are going to learn about your subject. For each module, learn enough to get started , play around for a bit, and then go back and answer any questions you had while playing around.
You are basically going to focus on learning by doing , which we'll talk about in a second.
The key here is to not learn too much up front. Instead, utilize natural curiosity to drive your learning as you play around on your own. Then, go back and actually read the text or consume the content about your topic, with questions in your head and some experience which will naturally guide you to seek out what is actually important.
A big problem we face when learning by consuming a bunch of material is that we don't actually know what is important. By playing around first and forming your own questions, you solve that problem and what you learn actually sticks.
Finally, you take what you learned and you teach it to someone else.
It doesn't really matter the format and it doesn't matter who you teach it to. You could talk to your dog or the squirrels in your yard if you like. Doesn't really matter.
What matters is that you somehow reorganize the thoughts in your head in a way that communicates them to the outside world.
This is the place where learning changes from knowledge to understanding.
And that's it.
What we have here is a basic formula you can apply to just about anything you want to learn quickly.
(If you want a more detailed example, with a workbook and videos to help you master this process, I've created an entire course on this approach, called 10 Steps to Learn Anything Quickly.)
Now, let's talk more specifically about learning and developing technical skills.
Learn by Doing
I believe we all learn best by doing, but when it comes to technical skills, this is paramount.
It is just not possible to learn most technical skills by simply reading a book or even watching a video tutorial.
You may get an idea of what is possible using a particular technology, programming language, or tool, but until you've actually used it yourself, or solved problems with it, you are only going to have a surface level understanding.
This might be obvious for programming languages, but can you really learn how to use source control from just reading about the syntax?
If you've never made the mistake of merging a file into the wrong branch or checking out the wrong version of the source code, and you've never actually used a version history to figure out where a bug got introduced, you aren't really going to know how to use source control --- you'll just think you do.
Continue reading %How to Learn Programming Languages Faster%
by John Sonmez via SitePoint