The part about finding a "sticking point" is really important - if you know what's next, you can pick up the context rather easily and get going. If you end the day feeling confused or not sure how to approach the next problem, it's going to be rough coming back to it.
On the other hand, leaving the day feeling confused and sleeping on the problem is often times more helpful than pushing through when you're not getting anywhere in the moment. It gives time for those "aha" moments when you're not actively problem solving.
Write it out then, quickly, before you stop. On paper, that is, with a pen/pencil. Write in pseudo-code if it helps get it on paper faster. Stick that to your monitor or under your keyboard, it'll be there the next morning. If you got it right, typing it in will be easy. If, the next day, you see things differently, you will be past the first draft.
After many years of learning this lesson over and over again, that much my subconscious works on problems, I've finally learned to trust myself to step away when I feel like I'm grinding.
This is a great suggestion, it can help get rid of that sense of "I need to write this code now" but still produce a meaningful diff in the relevant places you'll need to change without all the mental overhead of determining the logic right there & then
I interpret "emptying your brain" to mean "writing things down so you don't have to remember them tomorrow". This probably helps you remember, but without the stress of worrying about forgetting.
Comments
The part about finding a "sticking point" is really important - if you know what's next, you can pick up the context rather easily and get going. If you end the day feeling confused or not sure how to approach the next problem, it's going to be rough coming back to it.
On the other hand, leaving the day feeling confused and sleeping on the problem is often times more helpful than pushing through when you're not getting anywhere in the moment. It gives time for those "aha" moments when you're not actively problem solving.
Agreed. Leaving work unfinished, knowing what to do next, is for me the best way to be unable to fall asleep at night. That code just has to get out.
I have no problem stopping something when I feel stuck though.
Write it out then, quickly, before you stop. On paper, that is, with a pen/pencil. Write in pseudo-code if it helps get it on paper faster. Stick that to your monitor or under your keyboard, it'll be there the next morning. If you got it right, typing it in will be easy. If, the next day, you see things differently, you will be past the first draft.
After many years of learning this lesson over and over again, that much my subconscious works on problems, I've finally learned to trust myself to step away when I feel like I'm grinding.
Yep. I am my most valuable asleep. Day-me just does data entry on the solutions to hard problems night-me figures out.
Passive processing is real. Very often it’s not others that need convincing, it’s yourself.
I normally write uncommitted comments of what I need to work on next, e.g. a to-do for the next day
This is a great suggestion, it can help get rid of that sense of "I need to write this code now" but still produce a meaningful diff in the relevant places you'll need to change without all the mental overhead of determining the logic right there & then
git lets you edit history so I commit those comments and clean it up later
I think the best thing in that situation is usually to empty your brain of the seemingly important observations you've made and then sleep on it.
Unless emptying your brain helps you forget.
I interpret "emptying your brain" to mean "writing things down so you don't have to remember them tomorrow". This probably helps you remember, but without the stress of worrying about forgetting.
Yes, emptying your brain into text.