this post was submitted on 29 Sep 2024
72 points (97.4% liked)

Programming

17511 readers
169 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 1 year ago
MODERATORS
 

I begun learning programming a few years ago, and it feels like I barely progressed. I know the basics and a bit of advanced python(I have learnt to use a few libraries), html and css plus a tiny bit of c++, but not much outside of those. I enjoy programming and solving problems using code, and it’s an enjoyable hobby of mine. But I feel like all I do is extremely basic and I want to advance but it feels overwhelming seeing the countless of things I could learn.

I wanna know what are ways I can actually apply the things I have learnt/will learn on somewhat worthwhile things, because the main problem right now is that I don’t really have anything to do with the things I’ve learnt other than silly projects that don’t really last more than a day and aren’t that complex. I also want to advance my knowledge as previously stated since I feel like I know too little for the amount of time I’ve been learning to program.

For context I’m still in school but not too far off from higher ed, and I have a decent amount of free time on most days(~2-4 hrs).

Thanks if you reply

you are viewing a single comment's thread
view the rest of the comments
[–] jeffhykin@lemm.ee 32 points 1 month ago* (last edited 1 month ago)

Its a tough problem. You have to find something that you want to exist; like an app or a website or a game. For example, try making a GUI for managing SSH keys. You know, like the ones github makes you create in order to clone and push to a repo. Make a visual representation of those keys (stored in the .ssh folder), and tools to add/delete them.

Along the way you'll find tons of missing things, tools that should exist but don't. Those are the "real" projects that will really expand your capabilities as a developer.

For example, I was coding in python and wanted to make a function that caches the output because the code was inherently slow.

  • but to cache an output we need to know the inputs are the same
  • hashes are good for this but lists can't be hashed with the built-in python hash function
  • we can make our own hash, but hashing a list that contains itself is hard
  • there is a solution for lists, but then hashing a set that contains itself is a serious problem (MUCH harder than hashing a list)
  • turns out hashing a set is the same problem as the graph-coloring problem (graph isomorphism)
  • suddenly I have a really deep understanding of recursive data structures all because I wanted to a function that caches its output.