Hey everyone! I'm currently in high school and last year I made the common mistake of learning way too many programming languages at once. I jumped into web development before even understanding the fundamentals of how a computer operates. By the end of the year, I realized my actual programming abilities and problem-solving skills were far below average.
I devote a lot of my time to studying for college entrance exams, but my passion for programming is strong, so I want to use my free time to really solidify my knowledge. This time, I want to start from scratch, grasping how computers work at a low level before moving on. I'm currently reading "Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold to get a grip on the basics like data storage, bits, and binary.
After finishing that, I'm considering diving into a low-level programming language or exploring operating systems, but I'm not sure which path to take. Any suggestions on a learning roadmap that outlines what areas I should focus on and in what order would be super helpful! I'm also interested in becoming a deep/machine learning engineer or a backend web developer, but I'm torn between the two.
5 Answers
If you're leaning towards machine learning engineering, be prepared for a lot of math and possibly pursuing a PhD. On the other hand, for backend web development, a bachelor's degree might suffice; you'll be spending more time coding than crunching numbers. My advice? Focus on building projects! New learners often find themselves lost in theory; having practical projects will solidify your understanding. Stick to one language until you're comfortable, then exploring lower-level languages for memory management can be beneficial later on.
If you want to pursue web development, I recommend learning both frontend and backend. You don't really need to dive deep into low-level programming for that. Just focus on the core concepts and build projects!
Here's a great resource to build your foundation: https://teachyourselfcs.com. It'll help you get organized in your learning!
I totally relate to your experience! Jumping between languages can be overwhelming. The Petzold book is a great start for understanding the inner workings of computers. Once you finish it, consider trying C or even Assembly to really understand the machine-level details. This hands-on approach can dramatically shift your perspective on all these high-level tools we usually use.
You're definitely on the right track! Simplify your journey: solid basics + consistent practice go a long way. After that book, I suggest learning C (or something low-level) followed by data structures and problem-solving. Once you're comfortable, return to Python for some hands-on projects. You don't need an in-depth understanding of operating systems right now; just grasp the basics and build things. Don't stress too much about choosing between ML and backend until you've created some projects.

Related Questions
How To: Running Codex CLI on Windows with Azure OpenAI
Set Wordpress Featured Image Using Javascript
How To Fix PHP Random Being The Same
Why no WebP Support with Wordpress
Replace Wordpress Cron With Linux Cron
Customize Yoast Canonical URL Programmatically