why you should teach yourself csIf a person happens to find himself, they have a mansion which they can inhabit with dignity all the days of their life. - James A. Michener
If you can1, you should learn the fundamentals of computer science. Why? Many will answer because you become a better programmer. My motivations in learning cs are quite different, yet yield the same results. For me, every every programmer without a formal cs background should teach themselves cs so that they can find themself.
The essence of the problem is when programmers stick to their comfort zone instead of continuing to explore. Actually, it's quite similar to the secretary problem. Let's say someone started, and built their entire career via web development. Who knows, perhaps that person would have much more enjoyed working on distributed systems? It's like deciding on an ice cream flavor after taste testing only one of them.
To give you some more context, here are some of the many flavors of computing.
- UI/UX: HTML, CSS, Web/DOM APIs
- frontend: component-based view libraries (React/Vue), state management
- backend: business logic, API design, design patterns, domain driven design
- platform: databases, message queues, caches, load balancers
- systems: kernels, network protocols, bit fiddling
- infra: provisioning, orchestration, networking
- devops: deploying, monitoring, aletering
- data engineering: etl jobs, pipelines, dashboards
- data science: modelling, analysis, visualization
- games: physics, rendering, graphics
- and many others I missed or simply don't know of
Personally, my programming journey so far looks like: frontend -> backend -> platform -> systems -> backend/platform. After exploring the many flavors of computing, I now know which one I enjoy the most. I can fully excel in my work without any fear of missing out. At the same time, I also become a better programmer overall as I'm now t-shaped.
So, if you're intrigued with the idea of strengthening your fundamentals, here are two resources you should check out.
Good luck on your journey,
Jeff1 The whole premise of this post is to follow the advice only if you're able to. I am so so so priveledged to be able to spend as much time as I did learning cs, and realize not everyone has the opportunity to do so as well.