There should be a distinction, but I don't think it's really clear where it is yet.
In my own usage, I tend to alternate between tiny, well-defined tasks and larger-scale, planned architectural changes or new features. Things in between those levels are hit and miss.
It also depends on what I'm building and why. If it's a quick-and-dirty script for my own use, I'll often write up - or speak - a prompt and let it do its thing in the background while I work on other things. I care much less about code quality in those instances.
It's still gambling, you're trading learning/reinforcing for efficiency, which in the long run means losing skills.