- Published on
Why Do I Study Systems?
- Authors
- Name
- Benton Li
Foreword: By saying systems I mean systems in the context of computer science
Alors, it’s the era of AI, isn’t it? Amongst so many hot (and $ making) CS fields like ML, NLP, CV, etc. (Don’t worry if you don’t know what these are, most wall street people dgaf about them anyhoo), doing research in systems sounds like an unpopular choice.
Yet I still engage in distributed system research and TA system-related courses. I’m even planning on pursuing a Ph.D. in systems
WHY? I like rules and logic.
A World of Rules
To begin with, I shall say I’m lawful evil. I respect rules, I love deducting facts from rules (and exploiting them).
We all live in a world bounded by rules (i.e. laws, moral guidelines, curfew policy made by your mom).
In general, there are 2 kinds of rules:
- What you should do: e.g. Thou shall pay thy tax
- What you shouldn’t do: e.g. “Thou shalt not covet thy neighbour's house, thou shalt not covet thy neighbor's wife, nor his manservant, nor his maidservant, nor his ox, nor his ass, nor anything that is thy neighbor's” (exodus 20:17)
It’s similar in the CS field:
- e.g. Chrome should make sure your essay submission at 11:59 is on time
- e.g. Your PC shouldn’t cash when you are ganking through the mid bushes
A World of Logics
Now let’s look at the logic. Suppose event A will cause B, I can reason things:
- To let B happen, I can try to make A happen.
- If B didn’t happen, then I bet your ass A didn’t happen either
- If A will happen soon, I should prepare a plan for B
- …
But figuring out such a relationship is not easy and obvious. For example,
A number n is divisible by 3 if and only if the sum of all digits is divisible by 3
(Read more: Divisibility rule - Wikipedia)
This example is not particularly helpful in real life, but it gives you an aha moment. Finding causation relationships amongst things requires skills in quantitative and logical reasoning.
The bonus: If you have such skill, a fat $500k/yr package is waiting for you at Citadel.
Specification: liveness & safety
In the context of the system, rules are known as specifications. What a system should do, is called liveness. And what shouldn’t is called safety.
The specification is more or less like your girlfriend’s vague expectations for you. You should make her happy, but there are many ways to implement it (e.g. impress her w/ cheddar cheese). You shouldn’t lie to her, and they are many ways to implement it too (e.g. communicate more often.)
The same thing applies to software, operating systems, algorithms, etc. You can give a reasonable goal, and find a way (if there is any) to achieve it. If there is no way, can we reason it? Can we relax the goal so we can achieve it? If there is a solution, can we do better?
With this mindset, you may find countless systems challenges interesting.
And that’s the beauty of it.