Continuing your learning as a post-beginner programmer (part 3)
Hands up if this has ever happened to you:
You’ve been learning something new, and maybe working with it for a few weeks. You run into a problem. You Google it. Someone on StackOverflow has asked the same question. Good! you think, here’s the answer I need!
And then you read the answer, and none of it makes any sense. You know some of the words, but they’re arranged in unfamiliar ways, creating sentences you don’t understand. There’s probably a few words you don’t know in there too.
Congratulations! You have just turned a (or several) unknown unknown into a known unknown.
First, let’s talk about those concepts. What’s an unknown unknown? What’s a known unknown? To illustrate, I made you a super fancy diagram:
Okay, so ideally we want to discover those unknown unknowns (thus making them known unknowns), and turn them into known knowns. Let’s do it!
Learn your vocab
Granted, this is coming from a former English teacher. Trust me, though — it’ll help. Sometimes by Googling for a definition and reading a few, you’ll discover that you’re already familiar with the concept in question, you just didn’t have that particular name for it. Congratulations, your known unknown is now a known known!
Take a Detour
Oftentimes, though, it’s not that simple. You might uncover a treasure trove of Things That You Don’t Know. That’s okay! Again, don’t panic! But, it might be time to re-assess your trajectory.
I like to call these discoveries unanticipated prerequisites. It’s time to take a detour! You may not be able to achieve your original goal, but you now have a better idea of what you do need to learn in order to get there. It’s a good idea to write all those things down, and start ticking them off. For each thing that you know you don’t know, start learning. You might use the same process that I’ve been suggesting in this series of posts, or you might come up with a different way. Different types of learning challenges may require different approaches — perhaps one item may just require a quick video and some tinkering, while another might require you to build an app, make mistakes, and learn more lessons.
Remember, all of this is okay! Don’t beat yourself up if you’re unable to achieve your original goal right now. Keep working on the objectives that are right in front of you, and you’ll get there eventually.
I am really, really bad at reflecting on my learning. There’s always something new and shiny to move on to, it’s easy to take for granted the fact that I have learned an enormous amount (particularly in the last year). I don’t do it often, but I find that whenever I reflect on my progress, I feel good about myself and my journey.
Take a moment to appreciate how far you’ve come. You might look at some old code that you wrote, or re-do something that was challenging for you a few months ago, and find that it comes easy now. Smile, and pat yourself on the back. Well done!
So, that’s it! That’s my strategy for continuous learning as a programmer. I hope you found a useful nugget or two in there. I’d love to hear from you too — how do you keep your learning going? What strategies do you use? Comment below, or tweet me @raquelxmoss