August 11, 2018
In today’s fast-paced marketplace, the ability to learn new things quickly is an invaluable skill. I can’t count the times I’ve had to tackle a new language, framework, or library as a self-taught developer. In this post I want to share with you a few of the methods that have helped me expedite that process.
My learning strategy has mostly been driven by necessity. Transitioning careers into web development without the help of a boot-camp or college degree has made it essential for me to be a quick study at unfamiliar topics. That wasn’t just true in the beginning of my development career- I still learn new things on a weekly basis. Honestly, it’s a part of this job that I love!
This is much more of a pragmatic than an academic approach; in every area of life I’ve noticed that I pick things up better when I learn the “how” before the “why”, and this list follows that pattern. Hopefully it will help you tackle new topics and take new steps in your journey as a developer.
This is really tough- especially early on in development. The sheer number of web technologies is mind-boggling, and FOMO (fear of missing out) can lead developers to miss the focus it takes to learn one area well.
It takes discipline to slow down and learn one thing at a time - and that’s exactly what you need to do. Start with the big picture - what is the next career step you want to take (or what is your goal in your current job?) Then narrow your learning goals down to the most valuable tools to reach your goal. That means if you’re a front-end dev, you probably won’t be doing that Python machine learning project you read about on Hackernoon.
This is an area that it can help to have input in- find a mentor or just a dev who is a little farther along than you, and get feedback on one area you should focus on. If there are a few important areas, choose ONE! Then make a goal in that area, and focus relentlessly on it. Don’t skim other things, and don’t go off on a tangent… like when you spent 4 hours exploring different database options when you were originally trying to learn how to make a node server, and ended up implementing neither. Been there, done that.
Force yourself to focus on one thing, and you’ll be amazed how much you can learn in a short amount of time.
The challenge: choose one language/framework/library/etc to focus on for one week. Stick to it and see how much you can learn.
We live in an amazing time for self-learning; there are hundreds of resources available for any given topic; most are free, and many are very well done. I recommend sticking with tutorials and classes that have a working element in them. It’s always better to learn by building something.
I would also encourage you to go “off road” and build something on your own; going along with a video where you type in exactly what the instructor shows you will only get you so far. You need to launch out on your own and experience the process of looking things up for yourself.
If your goal is to learn React, build something in React without following a step-by-step guide. You’ll be amazed how much you learn in all of the frustrating “why isn’t this working???” moments.
The challenge: Tackle one project in the learning area you want to focus on. Decide on a whole project, or at least an area or two in a project, that there isn’t a clear step-by-step guide for.
Some people say you should “take time” for learning; I think that makes it sound too easy! To “take” something implies that it’s sitting there and waiting for you to walk along and pick it up. But let’s face it- no matter how talented you are, a week is still limited to 168 hours, and those hours fill up quickly. If you have young children at home (I do) and have any kind of life / volunteer work outside of development (I do) then the time crunch is even worse.
I’ve found that I need to be incredibly intentional about the time I make to learn. I set aside chunks of at least an hour, usually in the morning when our house is quiet (and I’m at my most creative - at least after the second cup of coffee!) Those are the times that I take to actually wade in and code. Other time is used however I can- I generally listen to podcasts in fields I’m studying while I work out, and use my commute (which happens to be on a bus) to do a little lighter work, like replying to emails or reading articles.
The challenge: for the next 20 days, dedicate one hour a day to learning. Make that time free of distractions (no Facebook, etc) and track how much you learn in those 20 hours.
From rubber ducks to coworkers to mentors, it helps immensely to communicate what you’re learning to others. Get code reviews whenever you can; feedback from more senior developers can be painful, but it’s a huge aide in learning. “Rubber ducking” - the practice of verbally walking through a problem - is also a big aide in learning and problem solving.
Even if you’re a person who learns best in isolation, make sure you’re taking some time to get feedback from others on what you’ve learned. This will help fill in gaps, highlight problem areas, and increase your communication skills exponentially.
The challenge: choose and commit to one, specific way to communicate what you’ve learned. Some examples might be signing up to give a tech talk, getting a code review, walking a non-technical person through a project you built, or writing a blog post.
These last two are more attitude/mindset items than specific steps, but I believe both are essential.
One of the problems with learning on your own is a lack of accountability. Taking time to learn can pay huge dividends in the long run - but in the short term you often see no reward for sticking to dedicated learning time.
You need to embrace the mindset of learning being a job. Your responsibilities at work are not optional - you likely have hard and fast deadlines, and accountability in place if you start slacking off. The same needs to be true of your independent learning goals; There needs to be an accountability structure to keep you honest.
So how do you make learning a job? Set hard and fast goals, and put incentives in place to motivate you to reach them. Find ways to hold yourself accountable (reminders, friends who check up on you, etc) and stick to them!
The challenge: find a unique way to hold yourself accountable for reaching your goals. A few examples of this would be to hold off on a nice purchase or experience until you reach a learning goal, or maybe discontinue your Netflix account until you complete a project.
I don’t claim to have all of this mastered - and I doubt I ever will. I hope to always hold on to a hungry-for-learning attitude. I’ve heard it said that some people with five years of experience don’t really have five years worth of learning- they just have one year they revisited five times.
I don’t know about you, but I don’t want to fall into that trap. I want to use every day I have as an opportunity to learn new things and push the boundaries of what I know. So dream big, make goals, and stay hungry.
The challenge: Go for a walk and do a little goal setting. Dream big about the progress you want to make and commit to doing the work it takes to get there.