Solution layering
Frequently when developing a solution to a complex problem, an important skill is deciding how you can chunk the solution into layers of progressive complexity. You want to start with a Minimum Viable Product that avoids many of the complicated edge cases, and gradually add nuance and accuracy over time.
For example, a predictive maintenance job planner might be layered something like:
At each layer you are adding more complexity and value, but you can build a lot of the MVP infrastructure and user interactions with just the first layer, before you spend time on more advanced ML models.
Simplifying games
One way to train for this kind of breakdown is by taking games and trying to simplify them into a version you could teach an absolute beginner, then consider how (and whether) you’d re-add rules to approach the full game. (I also think this could be a good interview question, to see how someone thinks about approaching complexity.)
An example for chess might be:
An interesting note is that check and checkmate are a convention; rarely do they substantially change the game vs the “win by taking the king” paradigm. (I think stalemate, i.e. not in check but can only move into check, is an exception.) So do you really need to re-add them, or is the game OK without them?
This contrasts to some other rules like pawn promotion that clearly can have a much larger influence. Similarly in soccer, the offside rule is notoriously tricky for beginners to understand, but removing it would potentially change tactics significantly, with attackers crowding the goal square waiting for a Hail Mary ball in. It is useful to practise thinking about which rules or features fall into each camp - i.e. are they a rough edge you can remove without impact, or are they necessary complexity within an MVP?
Another example of simplification is my attempt for D&D. This may not seem especially simple but is a distillation of hundreds of pages of original rules.