Instead of making a bunch of tiny individual projects, start working on one project that can start tiny, but grow over time.
I can’t help but think about this interview [1] with James Thomson who wrote Pcalc for the Mac. He wrote a little calculator app to help him learn. A fairly basic project, but then kept going. Any time Apple releases something new he ports Pcalc over to learn that new things, be it the watch, or even Vision Pro. When he wanted to learn about 3D graphics, he made an about screen for Pcalc that ended up being its own app where the user could drive a car around and it was a little physics sandbox. It kind of reminded me of the Easter egg in Excel 97, where the user could fly around a 3D world and find a spot where all the devs names would scroll by.
I’m kind of like you, where I like tiny projects that can be elegant and avoid complication. But to get better, the projects need to grow, and I’ve learned the most from project I’ve had which grew over time to become more than originally scoped. Sometimes this requires full rewrites along the way. Starting again with the knowledge of where previous decisions limited you can be helpful when starting other projects in the future.
You might see some of this as bloat. Maybe it is, but that’s part of the learning as well. What features are truly useful vs bloat. How can you implement new features while keeping the core experience feeling lightweight and fast? How can you design the features so the app is still simple and approachable for a new user, yet grows with them to be capable for power users? How can it adapt to fit different use cases?
So that would be my advice. Watch the interview below, and then pick a project that can start simply… your MVP… and then integrate and expand it with new features over time. Each feature is its own mini-project inside the larger project. You could look at almost any piece of software that has been around for a while for inspiration. Pick something you’d actually use day-to-day, and maybe one some people you know would use too. When you use it you’ll naturally start to generate your own feature requests, and if other people will be using it, you’ll have to develop with end-users in mind, which means more error handling, bug hunting, user friendly UI, documentation, help, onboarding, etc… all the stuff that probably doesn’t happen with little projects.
[1] https://m.youtube.com/watch?v=-_ZbWVTQNk0