I have been working with Blender on static models, small animations, and low-poly game assets for private use and feel that I'm slowly getting more fluent, which is great, yay. However, when I'm working on something bigger or more complicated (like a human character from model to animation) then I find it really difficult to stick to distinct stages of workflow (like these for example), as they are described widely. From software development I know that the waterfall model is often an unrealistic ideal, and I start to wonder whether that is also true for 3D-modelling.
For example, during posing I might discover problems in the mesh of the model, but fixing those will mess up the rig, UV maps and possibly other things. Or as a more specific example, sometimes it is necessary to apply modifiers, but later it turns out that maybe a step somewhere was missing and departing from non-destructive changes was too early. Handling such cases often results in a lot of additional work, that maybe could either be avoided or can maybe be reduced less work in some smart way.
I see that a smooth workflow comes with practice and experience, and I learned the hard way to save often and duplicate "backup" objects every now and then. However, I wonder: Are there good practices for working with Blender such that either I can keep my design stages separate, or I can implement some kind of iterative workflow that allows me to jump between design stages without creating (too much) additional work?
Edited to improve the title, specify the kind of work I'm doing (thanks Robin!), and to fix typos.