At any point in time I usually have three side projects, two of which I am really making progress on and the other is aspirational. I think that's fine.
For instance last month I wrote a Python chess program because it was something totally new to me but not that hard and there is a big literature on the subject (see https://www.chessprogramming.org/Main_Page) It is a good match for my tester and I want to take it to the chess club so I need to make it respect time control so I've been rewriting it in Java where interrupting threads is like falling off a log.
I code a lot of Python and Java and was able to code up the Java engine quickly because I really understood alpha-beta at that point and had a good set of test cases. If I get to the point where the Java engine is really refined it would be a good project to code up a faster one in Rust or Assembly or something, but it would be a disaster to try writing your first chess engine in a difficult and new language.
I have another ongoing project that involves making interactive cards like https://bsky.app/profile/up-8.bsky.social/post/3lbqfh7pesc2x
Some key ideas are:
Kanban: only have a limited number of projects in progress so your really finish them https://en.wikipedia.org/wiki/Kanban
Also choose projects that involve a certain budget of learning, risk and innovation. It is one thing to do something new with familiar tools and to do something old with new tools. Doing both at the same time is really dangerous. Think of how an athlete trains progressively.