Then I'd get frustrated with myself and probably go surf reddit for the rest of the day.
No system of any type has worked for me consistently.
Similar problems hit me with exercise. About the only system I have there is too obligate myself to finish something. For example, if I walk the dog a mile out, I have to walk the mile in, as well. Bike to work? I have to bike home now.
How I perform when I have a bad day is completely different from my performance on a good day. Something that's a task today might not be considered like one tomorrow.
There'll be days where I'll only do 25 small things then call it a day, and that's okay.
Can you permit yourself to subdivide those tasks that turn out to be more difficult?
I used to have an hour or so a week where I would consider what I called process improvement. And if anything ever really slows me down, I do consider that a priority.
I once found a weird import issue in a Google App Engine demo that, IIRC, traced back through to pip, virtualenv, and eventually setuptools.
The last time I made some headway on why I seem to endlessly procrastinate (said headway being enabled by, er, "self medication"), I came to the conclusion that it's because my brain sees a whole bunch of things to do, and instead of taking the rational approach of "well take things one at a time", it instead gets into a whirlwind of indecision, panics under the stress of all these things to do, and immediately starts reaching for an escape, thus compounding the problem. In the "self medicated" state my brain was more able to get into a groove of "okay, do $N more things" and actually make some headway, but only until the nausea caught up to me (at which point I had to force myself to call it a day).
My hope is that it's just a matter of tooling, and that a better toolset will help me get out of ruts without needing to rely on mind-altering substances.