As a beginner to software development, I flirted with a small handful of programming languages, always moving on before feeling completely proficient in one. As I’ve made my steps in learning I’ve realized it takes a long time to feel the level of mastery I was aiming for. I decided to step back and look at code in a different light. Reimagining the nature of code enables the absorption of new concepts beyond the realm of ones and zeroes. I found that sometimes the best ways to understand a new topic are through metaphor, visualization, or even creating an explanation in the simplest terminology. This has proved helpful in addressing language barriers because it represents relationships that don’t necessarily have to go down to the bare bones of code. When I first moved to the United States, my earliest memories were of my mom simultaneously learning C++ and English; she conquered both by following their respective rules to try to portray the best representation of her ideas, without an accent.
Parallels of Human Language and Code
When we attempt to learn a new language, the assumed belief is that it is harder to grasp as we get older. Assuming you didn't learn code at birth, it is necessary to have an understanding of vocabulary and the structure of words and sentences, which requires a certain amount of deductive reasoning. The strongest connection between human language and code is the formal system for communicating ideas. Also, much like the many different languages of the world, programming languages differ in the way that they describe and connect practices in order to complete a solution. They allow people to express their ideas using a certain set of rules (grammar or syntax) and for it to be easily understood by the listener (human or computer) without true loss of meaning. Human language is flexible and leaves room for interpretation while even the smallest mistakes in code will yield an error that will stare at you condescendingly until you find the minor spelling culprit an hour later.
What are all these comparisons and why did they help me in my ongoing journey to learning development? Like language, just because you know all the words doesn’t make you a poet. I was able to be less intimidated by code and learn some new approaches along the way:
- Break it down! When I try to solve the entire problem at once, I find myself overwhelmed and lost. Focusing on the smaller bits (like using helper methods) allows you to feel accomplished and gets you closer to the goal.
- Visualize what you’re making and try bringing new concepts down to the real world.