Magic
How do computers work? What happens when you tap on a link redirecting you to another website? How does my computer know which button I press on my keyboard, and how does it map to an actual key? What actually happens when I move a file to a different location on my computer?
We interact with computers and servers all the time. Since the inception of computing, we have abstracted and built upon many iterations of software and hardware to get us where we are now. Even ‘coding’ is an abstraction. When you write a hello-world app in Rust, Java, or whatever, how does that even work? It seems like magic at first.
CS
What I am highlighting is answered by Computer Science(CS). CS teaches us how everything works under the hood. If you look at job postings for software engineers (SWE), you will see many require a Bachelor's in Computer Science. Now, Computer Science and Software Engineering are not the same. Software Engineering is a subset of computer science; thus, SWEs should know computer science.
So why learn CS?
I’ll make a little analogy. Being a SWE is like being a chef. Yes, you can follow the same recipes or be trained to get a cooking “instinct,” but it won’t hurt to know some basic chemistry and food science if you want to be great.
The same is true for an SWE. There are frameworks, abstractions, and tools to build apps and get things done. These alone could be sufficient in your career, but you miss out if you don’t learn some basic CS. Many problems arise in development that are easier to grasp with an understanding of CS. CS is another tool in the toolbox for SWEs, and you will probably find it useful at some point.
Nand2Tertis
This is where Nand2Tertis comes in; it is free and a hidden gem in the tech community. It is a course that walks you through how to build a computer from scratch, hence the name. You start with a NAND electrical logic gate and slowly build up to making Tetris.
Now, if this sounds like borderline wizardry, then that’s exactly why you should complete it. I did this almost 5 years ago, and it has permanently impacted my career as an SWE. The mental model you shape out of it will stick with you forever, and you will be a better developer because of it.
Go build that ALU ;)!