I find it helpful to have:
- resumable tasks - I want to sit down and work, not sit down and figure out what to do
- multiple projects - if today isn't a great day for intellectual pursuits and I keep getting interrupted maybe I'll do an admin task or fix some simple bugs. Also works for when something is stalled.
- acknowledge you cannot control everything - if the progress is delayed in ways the estimate didn't anticipate, document them and keep working
I've found this indeed helps me get back to productivity. But at the same time, if I know what exactly needs to be done, it would be hard for myself to stop until it's finished. And that's when multi-day coding binge happens, followed by a few days of fatigue and low productivity. Kind a of a catch-22 for me...I wonder if there's anyway to be moderate about it.