I’ve found it extremely useful to keep a detailed log of my thoughts and ideas as I’m working on a problem that requires focus. It’s like a thread dump or memory dump of my thinking. Then, if I get interrupted for whatever reason, I can easily go back to the notes and “restore” from the thread dump.
I’ve found various side benefits in addition to being able to focus in shorter time windows. For example:
- it’s useful for dealing with interruptions that are part of work too - e.g. if you’re helping teammates with different projects, or have to switch contexts for other reasons.
- it can be useful as an artifact of work. For example, you’ve spent a lot of time debugging a weird issue and you’re still not making progress, so you can use a second set of eyes. You can share your work notes with a coworker so they can immediately know what you’ve tried, what worked or didn’t, etc. In that context, I like to think of it as “offline pair programming”.
This is a pretty good blog post I found on the subject: http://faq.sealedabstract.com/uninterruptible_programming_su... .
I’ve found various side benefits in addition to being able to focus in shorter time windows. For example:
- it’s useful for dealing with interruptions that are part of work too - e.g. if you’re helping teammates with different projects, or have to switch contexts for other reasons.
- it can be useful as an artifact of work. For example, you’ve spent a lot of time debugging a weird issue and you’re still not making progress, so you can use a second set of eyes. You can share your work notes with a coworker so they can immediately know what you’ve tried, what worked or didn’t, etc. In that context, I like to think of it as “offline pair programming”.