* Have some external metric that you trust to judge success. Because if you're like me you're internal "sense" of what is productive or not is often wrong. I know my 10 hour long in-zone hacking sessions are way less productive than my four hour well-rested in-zone hacking sessions - no matter how neat they might feel - because I see my delivery-rate drop.
* Get enough sleep (for me, 8 or 9 hours a night).
* Do a sane amount of "work" each day (for me, if I try and code for more than 6 hours a day I see my performance drop).
* Block out time. I have chunks of my day set aside for coding, pair working, reading, etc.
* Don't track time - track off-task interruptions. Keep track of whatever interrupts your N hours off coding (or whatever). Work at preventing those interruptions in future. If you're on a team be broad in your interpretation of "off task" - because your job is to optimise everybody's productivity - not just yours.
* Have rituals / an environment for work (when I sit in this chair at this time I am in work mode.)
* For coding I've found TDD to be a really effective way for me to get into the zone. Especially if I leave myself a failing test. It's got that intermittent reward cycle that's just crack for the brain.
* When I have trouble focussing I find something like Pomodoro Technique (http://en.wikipedia.org/wiki/Pomodoro_Technique) a way to trick myself into the zone. I can "force" myself to focus for "just 25 minutes". And after a loop or two it just clicks.
* Have some external metric that you trust to judge success. Because if you're like me you're internal "sense" of what is productive or not is often wrong. I know my 10 hour long in-zone hacking sessions are way less productive than my four hour well-rested in-zone hacking sessions - no matter how neat they might feel - because I see my delivery-rate drop.
* Get enough sleep (for me, 8 or 9 hours a night).
* Do a sane amount of "work" each day (for me, if I try and code for more than 6 hours a day I see my performance drop).
* Block out time. I have chunks of my day set aside for coding, pair working, reading, etc.
* Don't track time - track off-task interruptions. Keep track of whatever interrupts your N hours off coding (or whatever). Work at preventing those interruptions in future. If you're on a team be broad in your interpretation of "off task" - because your job is to optimise everybody's productivity - not just yours.
* Have rituals / an environment for work (when I sit in this chair at this time I am in work mode.)
* For coding I've found TDD to be a really effective way for me to get into the zone. Especially if I leave myself a failing test. It's got that intermittent reward cycle that's just crack for the brain.
* When I have trouble focussing I find something like Pomodoro Technique (http://en.wikipedia.org/wiki/Pomodoro_Technique) a way to trick myself into the zone. I can "force" myself to focus for "just 25 minutes". And after a loop or two it just clicks.