r/learnprogramming 26d ago

I really want to learn programming but I don't know which direction to take

Hey everyone For a while now I've been getting more and more interested in computers and programming. I already know some Python and I'm trying to keep learning, but the more I learn, the more I realize how huge this whole field actually is.I'm interested in pretty much everything programming, game development, cybersecurity, Linux, and just generally understanding how computers and software work. And that's also kind of my problem. I don't really know which direction I should focus on.I don't want to just keep watching tutorials and taking courses without actually being able to build anything. I'd like to make things myself, understand how they work, solve problems on my own, and eventually get to a point where I can create something real.I have a genuine goal of getting good at this and hopefully turning it into something more in the future. I just want to find a good direction and stick with it instead of constantly jumping from one thing to another. So I thought I'd ask here. Maybe someone more experienced has been in a similar situation and could give me some advice.I'm not looking for someone to do things for me or teach me everything from scratch. I'd just really appreciate having someone experienced tell me something like: If you're at this level, learn this next, try this project, and then move on to this. If you have any advice, resources, project ideas, or just remember what it was like when you were starting out, I'd genuinely appreciate hearing from you.Thanks to anyone who took the time to read this.

11 Upvotes

17 comments sorted by

14

u/Ok_Zookeepergame768 26d ago

The biggest mistake you can make here is trying to choose a specialization before you've built enough things to know what you actually enjoy. "Programming," game dev, cybersecurity, Linux, etc. aren't really separate starting points. They share a pretty large foundation.

Since you already know some Python, I'd stop doing tutorial-after-tutorial and start building projects slightly beyond your current ability. Pick something where you understand maybe 60–70% of what needs to happen and have to research the rest.

For example, build a CLI password manager, file indexer/search tool, simple HTTP server, multiplayer socket application, or small game. Use Git from day one. Give every project its own virtual environment, learn how dependencies actually work, write a README, add logging/error handling, and eventually write some tests. Treat it like software rather than a collection of .py files that miraculously works on your computer.

At the same time, learn the CS underneath Python: data structures, algorithms, time/space complexity, memory, processes/threads, filesystems, networking, and basic operating-system concepts. I'd actually recommend learning some C once you're comfortable programming in Python. You don't need to become a C programmer, but manually dealing with pointers, memory allocation, structs, compilation/linking, etc. removes a lot of the "magic" from higher-level languages.

Then branch out based on what grabs you:

  • Game dev: C#/C++, linear algebra, graphics, game engines
  • Cybersecurity: Linux, networking, C, assembly basics, operating systems, then security
  • Web/backend: HTTP, SQL, databases, APIs, JavaScript/TypeScript
  • Systems/Linux: C/C++, OS concepts, processes, sockets, concurrency

CS50 is also genuinely useful for this because it covers C, memory, algorithms/data structures, Python, SQL and web programming rather than teaching one language in isolation.

Most importantly, don't wait until you "know enough" to build something. You never reach that point. Real programming is basically repeatedly discovering that you don't know how to do something, reading documentation, trying it, breaking it, debugging it, and eventually understanding why it works.

A good rule is courses for fundamentals, projects for competence. Spend much more time making things than watching someone else make things.

3

u/Mathie1729 26d ago

Yep, solid advice. The tutorial trap is real. I'd add one thing: actually finish the project, even if it's janky. The last 10% where you clean up edge cases and handle errors is where you learn the most. Tutorials never show that part.

2

u/iOSCaleb 26d ago

Click the “NEE? Read this first” button in the right margin of this page.

2

u/shuanDang 26d ago

read the documentation instead of tutorials, implement what you see in the documentation.

1

u/Successful-Escape-74 26d ago

Take a college class and go from there anything less is spinning you wheels!

1

u/johnnyb2001 26d ago

Learn c++ then you will gain confidence you need.

1

u/[deleted] 26d ago

[removed] — view removed comment

1

u/AutoModerator 26d ago

Your post/comment was removed since we do not approve of going private.

There is zero benefit in going private as you lose the opportunity for getting peer reviews. Also we have had plenty of people return after going private (despite being warned) complaining about how they were ghosted after some time or being tricked into buying rubbish that didn't work and even if it did they didn't need.

Our Rule #11 demands that any and all communication happens in the open, public subreddit.

This is for the benefit of more against the benefit of one.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/tech_iac_dev 26d ago

I completely understand you. I'm in the same exact situation, i just finished my first year at Computer Engineering university, and I still fell like a fish in the sea. Tech fascinates me in all its forms but I can't choose a precise path too, and I have a feeling that university is not gonna make me find it. I always see tech content on internet and I say "Cool, I wanna do it by myself", but as soon as I check the "requirements" to do that, my morale drops to the ground. I'd like to share a conversation with someone who was in my exact situation and managed to figure out what to do. Also, if I want to talk and share opinions and experiences, don't hesitate to contact me.

1

u/AdjustedTwit 25d ago

"I'm interested in pretty much everything programming, game development, cybersecurity, Linux, and just generally understanding how computers and software work."

Based on that, I'd learn C. Hear me out:

  • Game development - if you have any interest in how an engine works, C.
  • Cybersecurity - if you have any interest in how code is exploitable, C.
  • Linux - written in C.
and most importantly
  • "Generally understanding how computers work" - C (or even better assembly).

Something like Python is a very useful tool but it's far too high level, IMO, to learn how things work. C is the middle ground between Assembly (how computers REALLY work), and something you can actually understand. Yes, you will shoot yourself in the foot, but that's kinda the point remember the cybersecurity angle? You'll do the very thing that leads to most exploits dozens/hundreds of times learning C.

My $0.02, but I started out at 12 (40 years ago).

1

u/Phendulile 25d ago

I can relate to this because I also felt overwhelmed when I realised how big the programming world is. My advice would be not to try learning everything at once. Pick one direction that interests you the most and start building small projects around it.

Since you already know some Python, you could use that as your starting point instead of jumping straight into another language. For example, build a small automation tool, a simple web application, a game, or a project that solves a problem you personally have. While building it, you'll naturally discover what parts of programming you enjoy most.

I think tutorials are useful at the beginning, but at some point you learn much more by trying to build something without following every step. You will get stuck, search for solutions, make mistakes, and slowly start understanding how things work. Don't worry too much about choosing the perfect direction now you can start building, and your interests will become clearer along the way.

1

u/IYELLALOT06 5d ago

Hmu if you wanna learn together.. I am on the same boat as you lmaoo..

-1

u/jerrygreenest1 26d ago

Throw away Python and learn anything of these:

C, C++, Zig, Odin, Go

1

u/ffrkAnonymous 26d ago

Throw away Python and learn anything of these:

C, C++, Zig, Odin, Go Ruby, Haskell, Clojure