> For the complete documentation index, see [llms.txt](https://abdulrahman-1.gitbook.io/my-digital-garden/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://abdulrahman-1.gitbook.io/my-digital-garden/level-1-computer-science/intro-why-computer-science-is-critical.md).

# Intro: Why computer science is critical

## Computer Science "has nothing to do with my job" argument

* You may not encounter computer science directly in your day-to-day work but it's for sure the the most important factor of becoming a talented software engineer, let's define talent IMO
  * A talented software engineer, has a non-linear positive effect to any organization (you can't predict his output based on the inputs), he understands machines very well and he can move faster between professions, technologies, and industries. A lot of promising talents can do much more but they are limited just because their skills in CS is limited, so it's better to have a strong foundation to break any learning boundary in the future.
* Computer science is critical for understanding how technology works and how to compare two different technologies (what is the difference between a container and a VM? Or bare-metal VM vs Guest VM? What about the cost of an actual Java thread for RAM and CPU context switch cost compared to a Go routine? How databases management systems implement their indexes data structures differently?)
* Everything will seems harder to understand if you always learning abstracted skills in a black box environment

{% embed url="<https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/>" %}

## Computer Science as a discipline

> Computer science in a high-level overview it's concerned with the theory + software + hardware studies of computing

In a deeper level however, we could divide it into subfields such as

* Algorithms & Data Structures
* Computer Architecture & Organization
* Operating Systems&#x20;
* Software Engineering
* AI and robotics
* Bioinformatics
* Networking
* Programming Languages
* Databases
* Graphics
* Human-Computer Interaction&#x20;

{% hint style="info" %}
It’s a good idea to gain this overview, so whenever you have the time you could directly go and learn about a certain subfield 👍
{% endhint %}
