There’s a saying in Colombia that goes:

That’s like Chinese to me

People use it whenever something sounds or looks entirely foreign, and the reason we use Chinese and not any other language, is because the Chinese language is not only different from Spanish, but it also uses a different alphabet*. That makes it as foreign as possible to a Spanish native. I was recently in Russia, and realized we could just as easily say “That’s like Russian to me”. And then I remembered the first time I used this expression in the context of Code.

Hieroglyphs

Let me tell you a story about young Daniel, writing his first web development project. One of the requirements was to use some sort of library, and I used MooTools (good times). I can’t remember the exact context of what happened, but I do remember that the documentation looked something like this:

// Pass in a configuration variable

var config = {
width: 100,
height: 200,
scales: true,
};

someFunctionThatNeededConfig(config);

Fearless explorer that I was, I copy pasted immediately and set to work. And disaster struck: I needed to change the copy pasted code to include more options. Now for the fun part:

This was the very first time I had ever seen an object in my life. Yes, it wasn’t a particularly good Web Dev 101 course

And something that now looks trivial, looked like, well, Chinese to me. I spent the next hour of my life banging my head against the wall trying to add more options to that object. In my programming world to that point, objects looked like Java wanted them, instantiated with a new keyword and required a class to be written somewhere. There was no such thing as what I was seeing on the screen, and unfortunately, no easy way to google what it meant at the time. I eventually learned and the web dev world went back to being awesome 🌈.

Now, here’s a story of more recent, older Daniel. This one’s about the first time I saw a curried function that used arrow syntax.

// Wat - Daniel Bolivar, Circa December 2015

const sum = x => y => x + y;

Honestly, the story tells itself. Chinese. Again. Then a process of researching ➡ understanding ➡ practicing ➡ and ultimately learning.

Syntax

A lot of languages use the same alphabet. Programming Languages are not different. Most of them, use a similar alphabet or signs to express actions and results. I’ve come to realize that those This is like Chinese to me moments are fewer and further apart the more code I write and the more I learn about Software Development. And I believe that is because I have built a common alphabet that I can go back to whenever I’m faced with a new programming language. Of course, it’s not a literal alphabet of characters, it’s more like a dictionary of concepts which I can now use to compare new knowledge with things I have already learned.

There are a lot of things that once sounded like Chinese to me. Here’s a non-exhaustive list of things I now understand that a year ago were entirely foreign:

  • Function Composition
  • Partial Application
  • Pattern Matching
  • Snapshot Testing
  • Object Destructuring
  • Mapping
  • etc.

So, if something looks like Chinese, Japanese, Russian, Latin or whichever language is entirely different from yours, then don’t panic!. Remember: you need to learn a part of a new alphabet to decipher it. And the internet will know the answer (most of the time).

* I know Chinese doesn’t actually have an alphabet, but that’s the analogy we use, so bear with me