Culture is this unquantifiable, nebulous concept. Elusive, devoid of hard facts, definitions and data. As such, it's is a subject I would typically shy away from. Because I'm someone who feels way more drawn to the objective, the binary, the hard truths and the unbreakable rules. Like the world of code. So it's pretty ironic that teaching myself how to program has actually taught me how to appreciate culture. Here's why.

Let's start by answering this question:

What is culture?

Culture is actually incredibly hard to define. If I had to take a stab at it, though, I would say that culture is:

The way a certain group of people does things.

I know this definition is incredibly vague, but, in my defense, so is culture itself. In fact, culture is so vague that it's pretty much invisible. I would go so far as to say that this is the one distinctive factor about culture.  A culture is generally invisible to the people that are part of that culture.

The reason for that is that culture is made out of tacit knowledge. Information that people 'just know'. It's not written down anywhere, because nobody would even think to write it down. By definition, it's obvious to the people that are part of that context.

To illustrate this, let's think of five simple scenario's:

  1. Visiting a friend's house
  2. Work meeting
  3. Sales meeting with the CFO of prospective new client
  4. Dinner with your significant other's parents
  5. Wedding

For each of these scenario's, answer the following questions: What are you wearing? Should you bring a gift? Is it okay to say you can't make it? What are appropriate/inappropriate topics of conversation? What kind of jokes are okay, if any? Is it okay to refuse food that is offered to you? Can you open your phone or laptop at any point during conversation?

It's not too hard to answer these questions if the scenarios are taking place in your own culture. Now imagine these scenarios again, but now you're in France, Ghana, China or Russia. Not so easy now, is it?

So how did code, of all things, teach me about this topic?

To answer that question, let's start with a definition again. What is code? Unlike culture, code is actually really easy to define:

Code is a set of instructions to make a computer do something.

Sounds simple enough. But the thing about this set of instructions is that it needs to be highly, highly specific. And this is because a computer has no understanding. It can only do what it is specifically told to do and nothing else.

If you're not specific enough in your code, that's going to result in errors, bugs and all kinds of other problems down the road.

It's hard to appreciate exactly how specific this set of instructions needs to be if you've never coded anything in your life, so here's an excerpt from an article that explains it perfectly.

When you ask non-programmers to describe the steps needed to make a cup of tea, they will say something like:

- boil water
- put tea in a pot
- when the water is boiled pour it into the pot
- wait 5 mins
- pour the tea into cups
- drink

Now the fun begins. You need to start asking these kinds of questions:

Boil water? Where is the water coming from? Where is the kettle? How do you get the water into the kettle? How do you know how much water to put into the kettle? What if there is already water in the kettle? What does it mean for the water to be boiling? How do I know if the water is boiling? 

Etc.

So as you can see, this seemingly simple set of instructions to make tea actually presupposes a ton of knowledge. And in coding, you can't presuppose any knowledge, because a computer doesn't understand anything other than what you have specifically told it.

If your code says to import a file from ./styles/style-sheet.css/ but you should have said ./styles/style_sheet.css/ it will never find that file for you, even if it's literally the only file in that folder.

Worse, it will only let you know that it can't find it after it tries to run your code and throws an error. This is your computer's TL;DR version of saying that it expected one thing, but experienced another, so it panicked and crashed into a tree.

Migration

Culture consists largely of tacit knowledge and unspoken expectations, largely born out of shared experiences between the people that make up that culture. This shared understanding makes sure that not everything has to be spelled out in minute detail. And the fact that you don't have to be highly specific in everything you say removes a lot of friction in society. It makes daily life run smoothly.  

However, when you migrate into a new culture, you lack at least some of this tacit knowledge, because you don't share the same experiences as the people who are already part of this culture.

Whether you're migrating to a new country, a new business/industry, a new family, a new sport, or whatever else it might be, whenever you're moving into a culture that's unfamiliar to you, you're like a computer trying to run a program that has some code missing.

Nobody tells you how you're expected to do things for the same reason that you don't think to ask. Culture is too obvious to discuss... until something goes wrong. So, like a computer, you're totally unaware of what information you're missing until you run into a situation where you don't know what to do.

To some people, this is all part of the charm of traveling, or generally engaging with people from another culture.

For others, it's added friction that just creates unnecessary problems.

I understand both perspectives.

But, as an immigrant myself, I would ask you this. Whenever you do run into a misunderstanding with someone from a different culture, comical or not, just remember. It's not rude. It's not personal.

It's like your computer giving you an error.

It's just unexpected behavior.