Published: September 06, 2022 • Updated: June 25, 2023 • 2 min read
A big mental leap I made early in my programming was starting to view computers as something that could be understood.
What is a computer? It’s a piece of silicon. You can recreate a basic version of it with water or even Minecraft redstone. Each abstraction on top of that piece of silicon is a set of instructions that combine into something remarkable. Something that you, with enough time, can understand.
To put it another way: computers are not magical.
I’m not talking about that magical feeling you might get by solving a tough problem with code. That is magical, and may it stay forever so.
I’m talking about this magic: “I need help with the ✨ magic ✨TypeScript incantation.” Typing a function isn’t magic, it’s a boring, predictable process you can figure out by reading the TypeScript docs for an hour. That magic kills learning because it often implies “this is not something that I can understand.”
Computers can be understood. To work in modern computing, you have to believe this. It’s okay to abandon a problem because you don’t want to solve it, or you don’t think it’s worth solving. Somewhere we all get to say “this is as deep as I need to understand this now.”
But when you’re starting, that depth is deeper than you can comfortably descend. Never walk away because you think you can’t understand the magic. You can.
Thanks to Nelson Elhage, whose post of the same name inspired this one.
What are your thoughts on understanding computers? Let me know!
Join 100+ engineers who subscribe for advice, commentary, and technical deep-dives into the world of software.