I always enjoyed just isolating an interesting mechanic from a game and then trying to replicate that. For example, i'd set myself challenges like: Implement a certain shader effect, implement basic AI, implement platformer pathfinding, Create a first person shooter.
If your core intentions are to practise and get good quickly, it can be beneficial to remove as much "fluff" from the process as possible (By "fluff", i mean things like wasting time creating sprites, designing levels, tweaking particle effects, before it is necessary. Sometimes the requirement to do this can make you bored of the actual idea before you get onto any of the good stuff). Though, if you enjoy that part of game dev, then by all means carry on. I would then mix in some actual projects from time to time to flex my creativity muscles. This would be an opportunity to pool together my new skills and create something.
Another benefit is that often times, even when you are working on a project, you can develop an individual mechanic in isolation and add it to your project after it is well-tested. I have done this on several occasions with my current project!
As others have suggested, game jams can be a nice way of getting a taste for everything. The time pressure keeps you efficient and you can often set yourself the goal of creating something in its entirety so that you also get practise with laying out a full project. Though i'd often focus on a mechanic, spend too long on the complexities of it and run out of time
But eh, still got me to learn something. I'd rather that than just doing something I already knew how to do.