I’m an American who has been living in China for 4+ years. Anyone who has been in a similar situation knows that discussing how to learn languages becomes a topic of daily conversation: expats discuss how to learn the local language, and the locals discuss how to learn English. I’ve had my own successes and failures with it, but I’ve discovered one common theme that everyone should be more conscious of in their day-to-day studies, and not only in language learning: the balance of creating and consuming.
There are four core categories in language learning, and they can be broken down between creating and consuming:
This isn’t anything new — surely every student has seen these four categories presented before. But it quickly falls out of their mind, and they stop thinking about it. For a thousand and one reasons, language learners avoid creating as much as possible. Why? It’s hard. It’s really, really hard. Creating your own sentences and expressing your own thoughts in a foreign language is a lot harder than reading someone else’s. You will feel dumb, and you will look foolish.
Everyone has ten excuses ready at any given moment to avoid speaking and writing, both those learning English and those learning Chinese. And even if they’re good excuses, they’re still excuses. Those with the greatest mastery of a foreign language don’t bother with excuses, they just use the language. This shouldn’t surprise anyone — but very, very few actually manage to do this!
For most of my career as a developer, I had assumed that that writing code was the hard part. And it certainly can be! But I had the attitude that reading code was simple — if I could write it, why couldn’t I read it? Well, I’ve been thoroughly converted from that belief by now. After years of doing code review and diving into other people’s code-bases, I’ve realized that reading code is as much of a skill as writing it.
Creating and consuming again, right? But it’s the opposite in the coding world! While language learners have a great resistance to creating, programmers have a great resistance to consuming. It’s remarkably rewarding to write your own code and see it work, and it can be quite dull to read someone else’s. I spent years as a junior developer figuring things out on my own, afraid of asking for critique because I knew my solutions weren’t perfect. If I’d spent more time reading and understanding other people’s solutions, I’d likely have had some key insights much, much earlier.
You may be thinking: “but, while writing code, I have to read the code that’s already there!” While there’s truth to that, for most of us, it’s not enough. Many employees that work in the same place for a long period of time will be looking at the same code (and code style) for years. You’ll find a lot more value by reading code that’s separated from that which you interact on a daily basis — go out and read some code you’re unfamiliar with.
It’s important to find a balance between creating and consuming. They exercise completely different parts of your brain, but they’re certainly related. Insights gained when consuming can vastly impact your creation, and vice versa. Fight through the resistance and work on both sides of the equation, and you’ll have a lot more “Aha!” moments!