For me, I use Stepwise Refinement [3] to get to this point, but to get further, I have to start breaking out a more abstract approach. I found this definition of Structured Programming that puts it very nicely [4].
There's also a perhaps self-imposed wall, where you might trial a solution and implement a prototype, then use that to realize that it no point in pressing on without some serious redesign of a key component. For my example above, the rendering part is old-style OpenGL, which works pretty nicely at 60 fps, but I'm holding off doing more until I can slot in and benchmark a better approach using vertex buffers and shaders, with the goals of enabling me to shape and scale the renderings in an abstracted coordinate system, and scale to rendering hundreds of files instead of just one.
[1] https://twitter.com/watmough/status/962470455037841409
[2] https://twitter.com/watmough/status/965007110391128064
[3] http://www.informatik.uni-bremen.de/gdpa/def/def_s/STEPWISE_...
[4] https://www.encyclopedia.com/computing/dictionaries-thesauru...