How studying Chinese prepared me to learn software development

My sophomore year of high school I made a spur-of-the-moment decision to swap Spanish for Mandarin Chinese as my foreign language credit. Why not, right? Thirteen years and a Bachelor’s, Master’s, and Fulbright scholarship later, proved what I thought would be a lighthearted, temporary foray into the world of Mandarin was actually a much weightier investment. Through this period Chinese has become infused into my bone marrow. It’s become an appendage I can’t imagine living without, a permanent part of my personality.

Although I’ve turned my focus from characters to code, Chinese is too deeply rooted in me to have been replaced. And the lessons I’ve learned while studying Chinese haven’t gone away either. In fact, many of these lessons lend themselves nicely to the study of development. I’ve highlighted five concepts that bridge seamlessly from Mandarin Chinese to software engineering.

一 Follow the Logic
Linguists have hypothesized that a command of approximately 6000 Chinese characters is necessary to read a newspaper, and 4000 spoken characters to conduct a basic conversation. I cannot read 6000 characters, nor can I call upon 4000 spoken characters, but I can read newspapers and have had plenty of conversations in Mandarin. How? By learning to follow the logic. By learning to keep your mind locked into the logic of the conversation, or program, you give yourself an advantage in wading through unfamiliar characters, words, or lines of code. If you lose track of the goal of the article, conversation, or program, determining right vs. wrong becomes nearly impossible. Since Chinese and development both operate within strict lines of logic, this lesson is applicable to both fields.

二 Learn to Imitate
Imitation is the sincerest form of flattery. It’s also a great method for learning. After studying hoards of Chinese textbooks I discovered that not a single one of them could teach the language as efficiently as listening to native Chinese speakers, and imitating them. Once I began putting this into practice, my speaking proficiency reached new heights. The same can be said for software development—do what the pros do! With a growing number of professionals in the field, and a growing number of social platforms designed for sharing code, studying how proficient developers code is at least as efficient as any textbook.

三 Comfort Kills
Studying Chinese means making mistakes. A ton of them, really. This is essentially the nature of the beast; try to write or speak a sentence, fail miserably, try again, keep trying, and eventually reach a level of correctness. As you’d imagine, perfectionists don’t fare too well in this format. Instead, those daring enough to venture wrong answers tend to learn quickest, as they generate enough mistakes to build correct answers upon. In both Chinese and development, staying within your range of skills is a recipe for going nowhere. In order to build skills, venturing outside your comfort zone, trying new things, and dealing with errors is the path to excellence. What’s better than a failed RSpec test?

四 Work > Reward
Chinese is a tough language to learn, software development is no walk in the park either. To do well in either of these fields one must prepare himself to expect the work load to outweigh the reward. Knowing this ahead of time is essential to reduce frustration; my years of Chinese study have taught me that the amount of effort to produce one sentence can sometimes be overwhelming. The same is true in development; sometimes hours are required to produce one line of functioning code. Accepting this as the nature of the beast yields a more productive mindset, and reduces frustration when things don’t work out the first time.

五 They’re Tools, Not Trophies
One thing Chinese and software development share is a wow factor. Both are really great conversation starters, resume lines, and look fabulous in a facebook profile. But part of commanding a skill set is understanding the purpose behind the skill. Chinese was not designed to show off to your friends nor be boasted about on facebook; it’s a language intended for communication. Yes, its characters are beautiful and complex, but these attributes are not the ones intended to motivate the language’s learners. The same is true for software development; there’s something awe-inspiring about a page of green, orange, red and grey text sprinkled on the black background of a text editor. But text editors, terminals, models, controllers, ruby, etc. are not there for anyone’s visual delight; they’re there to construct software, apps, websites, and aid in communicating ideas. This should be at the foreground of any developer’s mindset: respect the tool, and keep your eyes on the prize.