HACKER Q&A
📣 MarioCircuit

Where to go after learning "beginner" CS like coding?


Hello all, I'm a high school senior and a longtime lurker. You can guess by my presence here that I'm interested in all things CS, as a hobby if not necessarily a profession, but I've got no idea what to actually do with that interest.

I've done all the "beginner" stuff like learning Java/Python, making scripts and projects for my own computer, trying archlinux on a VM. I've taken all the CS courses at my school (they're frustratingly shallow) and I just don't know how to go from playing with my own glorified "Hello World" scripts in noob world to actually making projects people use, seriously tinkering with my computer, etc.

Seeing that post from a week or so back about the 16 year old self-hosting with their own servers was kind of my wakeup call. While I've been twiddling my thumbs dreaming of doing something like that, sort of justifying it with the mentality of "I'll just wait until I'm older", they actually went and did it in the exact same few years I'd had (if you're reading this, btw, you're my hero and congrats on the achievements!) I'd like to actually make progress that feels meaningful, but I'm not really good at finding out how to do that and more often than not I end up wasting time.

What resources/forums/communities, literally anything really, would you all recommend for me to take a look at; or what would you all recommend for me to learn/do next? Stuff about basically any CS-related, computer-related, etc. topic would be appreciated! I'd really value advice from people like you all, who've gotten past this level already, on how to go past it. Thank you all and have a great day! :)


  👤 mtlb Accepted Answer ✓
The most important thing is to figure out what you want to achieve. Banal, easier said than done, but always important to keep in mind. Your goals and understanding of them are likely to change, but having more understanding is always better than having less. This understanding can only be gained through practice, and is personal to you, which makes it hard to give specific advice.

CS is not really a field that can be mastered as a skill. The skill sets of people developing web services, games, robots, programming languages, hardware architectures, and software that runs on space shuttles will be somewhat different. There are also purely theoretical and mathematical aspects: algorithms and data structures, type theory, formalized logics, etc, etc. All of those have their own resources and communities.

There are some general things that would be good to know for anyone working on anything CS-related. Check out a few computer science courses in big universities, and the things they all teach in first and second years would be the most universal ones.

As for the practical stuff you can do right now: for engineering aspect, I would recommend picking a simple project (website/app/game) and implementing it end-to-end using best practices you can find for everything: code style, testing, repo, CI/CD, and so on. For theoretical aspect you can check out Project Euler and see how far you can go in solving the challenges on there.

And I wish you best of luck on your quest.


👤 eimrine
Few truisms: learn as much Mathematics as possible because this is how things work, get rid of Qwerty because the younger you are the more benefits you get, always prefer FOSS because our tools ought to be controllable by us and learn SQL because how else are you supposed to manage your data.

👤 Turing_Machine
> learn as much Mathematics as possible because this is how things work,

Agreed. Definitely learn as much linear algebra as you can, particularly if you're interested in graphics -- but it's useful for all kinds of things.

You say you've been learning Python and Java. Work on learning JavaScript, and maybe even start looking into WASM. Ignore the people who tell you JavaScript sucks (yeah, it kinda does suck in many ways, but nonetheless there are scads of jobs for it, and zillions of libraries to do just about anything you want).

Perhaps get your feet wet with LLMs. There's a lot of hype in that area right now, but I don't think it's going anywhere.


👤 iamflimflam1
Find a project or problem that interests you and you want to solve. Then apply what you have learned so far to it.

This will open up avenues of research as you find out what you don’t know.