Engineering as a language of mine
中文版本:讓工程成為我的方言
I’ve been dreaming about making engineering a language of mine after hearing Jeremy’s podcast. If he can dream about gradient descent when he is sleeping, why couldn’t my mind talk about the Taylor series when it’s wandering?
As I’m working toward it, I quickly notice two things:
- My mind only thinks about engineering problems when it’s uncomfortable, e.g., when I cannot figure out some bugs.
- My mind doesn’t talk about the Taylor series during its free time because it’s lazy.
I tried to recall lots of engineering problems during my free time, and I realized my mind wanted to shut down if there weren’t any problems I hadn’t resolved yet. It much rather thinks about narratives, aka some easy telenovelas, that are convenient to come up with. This makes sense because our mind is wired with lots of stories we choose to believe in.
Then how do I make engineering a language of mine? After being inspired by the story of engineering, I wonder if it might be possible to make engineering a mixture of problem-solving and storytelling.
For instance, when I think about CORS (Cross-Origin Resource Sharing), you will get the definition of it:
Cross-Origin Resource Sharing (CORS) is an HTTP-header based mechanism that allows a server to indicate any origins (domain, scheme, or port) other than its own from which a browser should permit loading resources. CORS also relies on a mechanism by which browsers make a “preflight” request to the server hosting the cross-origin resource, in order to check that the server will permit the actual request. In that preflight, the browser sends headers that indicate the HTTP method and headers that will be used in the actual request.
Goddam it! No wonder my mind doesn’t want to think about it when it has free time. However, let me remake this as a story for you.
CORS is like a permission slip when two friends living in different houses want to talk to each other. If you just go straight to their house and open their door, that’s completely disrespectful! You should ask if they are willing to talk first. To have great communication, you need to do two things:
- You knock on the door and ask if they want to have a conversation atm
- If they say yes, you tell them what is on your mind
In engineering terms, you and your friend are websites. If you want to ask something from them, your respectful knock on the door is called the “preflight request.”
Usually, there will be a doorman, called OPTIONS, telling you if they want to talk to you (e.g. comply with the rules as a guest). If you are permitted, you can talk to your friend and get and give whatever you want!
To put it into even more detail, the doorman can specify rules on who can talk to your friends.
- Does the guest need to be registered? Access-Control-Allow-Origin: Specifies which origin(s) are allowed.
- What kind of conversation is allowed? Are you allowed to give or take the information? Access-Control-Allow-Methods: Lists the HTTP methods that are allowed.
- What type of information you can give or take? Access-Control-Allow-Headers: Indicates which headers can be used in the actual request. (JSON, plain text …)
Even though merely looking at the codes looks daunting, if you give the language a closer look, you will realize the naming makes a lot of sense with the story. Access-Control-Allow-Origin is talking about where the source comes from, Access-Control-Allow-Methods is about the methods to communicate, and Access-Control-Allow-Headers (less intuitive) is about some additional information that is being sent.
Asking my mind to recall this story is so much easier than thinking of CORS, server, mechanism, bla bla bla…
Combining the philosophical level, thinking of problem context and design philosophy to learn about engineering, I started to think maybe I should expand my perception of engineering from algorithms and problem-solving process to a web of stories and an intricate design of human ideas, and a language our ancestors created.
I find lots of engineers have a superiority complex for the knowledge they have. This is tied with the social perception of “engineering is a difficult mysterious discipline that is only for smart people” or “engineering is for socially awkward nerds who are as cold as machines.” When they talk about it, they sound scarily smart in the beginning. However, if it doesn’t deter me from learning deeply about it, it is just another piece of knowledge, another kind of information. The prominent social perception essentially is just another story that we can choose to believe or not to believe.
Debating about which engineering technology to use should be similar to debating which bakery sells the best croissant. The image of learning engineering shouldn’t be imagining yourself as a hacker wearing a hoodie in a basement, sitting humpbackedly in front of computers. The image of learning should be a creative process, an imagination, a daily encounter.
Sometimes, you encounter new vocabulary that you don’t know what the locals are talking about.
Sometimes, engineering is like practicing a serve in ping pong that you try to master. Sometimes, it’s like a crime scene where you try to find the murderer.
Sometimes, engineering is seeing many different living room designs that you try to pick for your house. Sometimes, it’s a recipe you try to follow.
Sometimes, engineering is a puzzle that you try to find the next piece.
Sometimes, engineering is an ancient fairytale that a grandpa is telling you.
I believe only when we are able to let go of the social narrative of engineering, we are free to recreate engineering as a language of ours.