JavaScript Weekly: Learning Alone, Together
Why the Trope of the Lonely Coder is Outdated
A few weeks ago we took a break from JavaScript to talk more generally about how to use a structured problem solving approach. This week, we’re going to depart even further from the norm and talk about learning — specifically, what I call “lonely learning,” and why it’s an outdated method for new coders. Like a lot of coders, I learned the craft mostly on my own. I spent many long hours behind my home computer, banging away at problems until my eyes started to glaze over. I read books, did tutorials, and fumbled through projects. When I encountered a problem, I mostly just suffered with it until I found a solution — sometimes hours or days later. As I look back on that introductory period of my coding career, I often wonder, “why in the world did I do it that way?”
The odd thing about my lonely coding journey is that the loneliness was not enforced. There is no good reason that I had to do it all alone. The bulk of my learning was done through Launch School, which is an intensive online school for developers and has a robust community of instructors and other learners. In other words, I had a built-in support network staring me in the face the whole time, but for far too long I failed to take advantage of it. Only after I completed Launch School did I start to get more involved in the community. And in doing so, I discovered an amazing group of passionate technologists who seem to spend as much time helping others as studying for themselves. Why hadn’t I taken advantage of this while I was going through the curriculum? Why had I chosen to suffer alone?
I don’t have any regrets whatsoever about my decision to pour all of my free time over several years into learning to code. I do however have some regrets about my failure to take advantage of the resources around me. Not only would doing so have saved me a lot of pain but I would no doubt have been happier along the way. Learning a complex topic like programming can be extremely lonely, especially when you’re doing it part-time from home. But it doesn’t have to be this way. The lonely coder’s journey is an outdated trope that doesn’t match the modern learning landscape. And that’s why I wanted to write this article. I want learners who are just starting out to embrace the community of peers that awaits them and choose to learn alone, together, rather than to learn alone, alone.
A Day in the Life of a Lonely Learner
Everyone’s learning process is a bit different, but there are some themes that we can weave together to imagine a typical day for a lonely coder. Imagine that you are just getting started with JavaScript and you’re trying to understand scope. Perhaps you’re working through a book, or curriculum in an online course, or maybe you’re reading through an online tutorial. But you’ve never programmed in JavaScript before and you’re having a hard time developing a mental model that explains why variables are hoisted or how closure works. It’s been hours since you first started digging into this topic and you’re getting frustrated.
Frustration is a feeling that is pretty common to you, but it seems like par for the course when it comes to learning to code. The trope of the lonely coder is pretty firmly entrenched in your brain, thanks to media portrayals of the tenacious youngster who stays up all night coding, simply refusing to abandon the screen until she has mastered a new problem. But you’re tired — it’s getting late and you have to wake up in the morning for work. Your spouse is putting the kids to bed upstairs and now, in addition to your frustration over not understanding scope, you also feel a bit guilty for neglecting your family. You’re tempted to just give up and move on but you know that that’s not the path to mastery. If you really want to become a programmer, then you need to learn this material — simply “moving on” isn’t a good option.
So what do you do now? Like every other lonely coder, you hit up your good friend Google. “What is scope?” you ask, and in response Google sends you links to several hundred blog articles and Stack Overflow responses, collectively containing many thousands of words about a topic that you already feel overwhelmed by. You click on the first result but come away from it even more confused. Six or seven blog articles later you feel like you’re starting to get the hang of it, but you’re not sure. The code you’re writing to try to illustrate scope is working, but you’re still not totally sure why.
A few days pass, and after much searching, and reading, and mulling over, you are finally getting the hang of things. It’s been a bit of a rough ride though and you’re feeling drained. You encountered scope just a few days into learning JavaScript and you’re certain that much more difficult material is on the horizon. How in the world are you going to get through it all if every topic requires such a slog?
A Day in the Life of a Community Learner
Lonely learning is probably the norm for a lot of coders, but there are other ways. Let’s imagine now that you’re learning to code part-time, from home, but you have committed to taking advantage of all the smart minds around you. You’ve decided that learning alone, together, is the best way to success and that you never really bought into the trope of the lonely coder anyway.
For the last couple of months you have been exploring JavaScript in depth and you’re starting to fall in love with its flexibility and power. Like any language though, JavaScript has its quirks and some of them are causing havoc in your brain. This week’s topic is prototypal delegation and you’re having a hard time figuring out how it differs from classical inheritance. Rather than go searching blindly for an explanation, you jump onto Slack and ask your peers if anyone can help. A few of them quickly pipe up, noting how they too had initially had trouble figuring out the object prototype chain. One of them sends a link to a tutorial that she found to be really useful. Another points out a website with practice problems that you can go through to test your knowledge.
After reading through the link your peer sent you, and doing a few practice problems, you jump into Slack again and ask if anyone is interested in doing a bit of review. One peer, who you have talked with a few times before, says that he would love to and the two of you get on Skype to talk through some questions. After a bit of idle chatting you ask your friend to explain the object prototype chain to you, as though he were answering a question in a job interview. Your friend does a great job, but you offer a few pointers about how to improve his technical language. Next, it’s your turn, and your friend shares his screen and throws a problem up for you. It’s a tricky one, and you get stuck halfway through, but your friend is there to nudge you in the right direction. By the time you finish you have the sense that your mental model about object prototypes is starting to firm up, and more importantly, your confidence is steadily growing.
The Benefits of Learning Together
Human beings are social creatures. We’re capable of learning alone but we’re not really meant to do it that way. The beauty of learning in a community is that we can all benefit from one another’s mistakes and triumphs. The more complex a given topic is, the more difficult a particular learner will find the task of mastering it. As complexity increases, nuance does as well. One learner might quickly pick up a certain bit of nuance while completely missing another. Meanwhile, another learner might do exactly the opposite. Alone, neither has the full picture, but together, they can exchange knowledge to the point where they both have the full picture.
The benefit of learning together is, however, more than just knowledge exchange. It’s also about support. Long learning journeys have many ups and downs, twists and turns, and sudden roadblocks that require rethinking the way forward. In a group, these obstacles are significantly easier to address. At one twist, one person might find the right way forward; however, that person doesn’t have to be in the lead every time. Each member of the group gets their turn at helping the others along. In this way, everyone reaches their goal faster and with more completeness.
Finding Your Peers
It used to be that if you wanted to learn programming in a group, you had to do so in an academic environment. If you were lucky, perhaps you lived in a place with a community of computer hobbyists that could help you along, but for most that wasn’t the case. If you wanted to learn to code but didn’t have access to a university or a group of like-minded learners, then you pretty much had to do it on your own. This is the origin of the trope of the lonely coder — because once, it wasn’t so much a tired stereotype as it was a reality. That time, however, is over.
The Internet has given us incredible new means of learning. Not only can we share our knowledge, but we all have access to a world-wide community of like-minded learners. If you are a beginner coder and have access to the Internet, then you have access to thousands of other beginners just like you. This is your peer group — it’s just waiting for you to come find it.
If you are learning to code with an online coding school, then you probably have a built-in community to join. If you’re using self-paced courses like Udacity or Codecademy, then there are message boards for you to find other learners. Even if you’re using books and independent study, then there are still places like Reddit for you to engage with other people at your level. These communities, however, are not going to come to you. It’s up to you to go out and join them. In order to benefit from being part of a group you have to participate.
Perhaps you are thinking “OK, great, there is a community out there, but I don’t really know enough to join it.” Yes you do. Period. Even if you’re a total beginner you have something to contribute to the conversation. A lot of us have trouble joining virtual communities because we are uncertain of our skills or fearful of embarrassment. Unfortunately, there are a few nasty places online where beginners are pounced upon as though being new to something were a crime. But don’t let that pollute your entire outlook towards communal learning. If you take the initiative to reach out to others, you will quickly find a lot of willing peers. After all, most of the learners out there are just like you — a bit reticent, but ultimately looking for partners on their journey.
TL;DR
The message this week is a simple one: get out and find your peers. Learning together is far superior to learning alone and there is no reason that you have to suffer through problems by yourself when there are others out there who can help. Take the initiative and dive in to your community. Ask questions. Answer questions. Start a study group. Challenge one another. If you do this, you will not only reach your goal faster but you may even make some friends along the way.
I hope you have enjoyed this week’s post about learning alone, together. What has your learning journey been like? Have you had help along the way? If so, how did you find it?