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

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

  • Software Engineering

  • AI and robotics

  • Bioinformatics

  • Networking

  • Programming Languages

  • Databases

  • Graphics

  • Human-Computer Interaction

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 πŸ‘

Last updated