E.g. I want to implement a simple image hosting to learn GCP and have some fun with React/Tailwind (I had AWS experience). Instead of building the hosting itself I start with user authentication, reading about Passport.js, JWT, specs, etc. I spend a lot of time on this, until I get bored and set the project aside...
I have 20+ years of experience and I worked on stuff like Node.js and Chromium - so I know a lot of "what can go wrong" in a cloud application - security, scalability. How can I learn to ignore those concerns when I toy with code for fun?
Create a simple proof-of-concept prototype, maybe of just one small tiny aspect or feature of the system and then continuously iterate. Don't try to boil the ocean all at once. The positive feedback from having something that works, and then being able to try out changes and improve it is much more pleasant than the continuous frustration of having something large and complex that doesn't work which you keep needing to fix bugs in.
In your case, I'd start by building a "Hello World!"-style app using some simple framework like Python Flask (https://flask.palletsprojects.com/en/2.2.x/quickstart/) or the node server of your choice. If it's longer than 50 lines, then you're doing it wrong. No CSS, no client-side JavaScript, just a plain HTML form that lets you POST an image from a browser to the server filesystem. Then once that works, start adding more functionality: add another endpoint where you can see the POST-ed image, once you can see the images, give them content-addressable hashes, post the images to some cloud service, etc. But first get something working locally that you can rapidly iterate on. Good luck!
Establish a forcing function in the form of users. Onboard them and include a way for them to report bugs (provide them with an issue template) and also maybe add a Slack workspace for the project. This will do two things:
- Bring issues you were not aware of to your attention.
- Prioritize your backlog with frequency/severity: by the time the fifth user complains about something you were aware of (frequency), you'll drop whatever non-essential thing distracting you and get to fixing that issue. By the time something really bad happens once (severity), you get to work on it as soon as possible.