Your reasoning however for learning to be interrupted in our life, is something I am not necesarily sure about. Are humans just simply bad at long stretches of focus? I am not sure but i am and thats why I use the pomodoro.
Your reasoning however for learning to be interrupted in our life, is something I am not necesarily sure about. Are humans just simply bad at long stretches of focus? I am not sure but i am and thats why I use the pomodoro.
This is a great question. I think the answer is: It depends on what you mean by focus.
Humans are certainly capable of long periods of concentration, of all sorts. Sitting in a tree waiting for the prey to come into range. Sitting under the tree patiently digging out edible roots. Sitting in a band jamming for twelve hours straight. Sitting facing the wall in Zen meditation.
But, in programming, the word focus has a specific and somewhat paradoxical meaning. When we are focused on programming it feels as if we are focused on something. And yet when you think about what you're actually doing in programming the word focus seems less and less appropriate.
Here's programming: You think about the feature you want to build, and then you think about the existing system that you want to attach it to, and then you think about the big picture, and then you think about an individual data structure. And then you sketch the module on a whiteboard, and then you write an empty module file, and then you use a C debugger to find and fix a bug in the module loader, and then you patiently write an editor macro to change a giant text file from XML to JSON, and then you write a unit test for the JSON parser. Then you write the parser. Then you stare at the parser and try to imagine explaining it to a junior PHP developer. And then you sigh and mentally kick yourself for overdesigning and quickly reimplement the parser, except without the tricky metaclass and the tail recursion and the nifty hack that reads like obfuscated Perl, and then you sigh again and get some coffee. And then you find the module loader is still broken after all and you do ten minutes of research into alternative module loaders, during which you realize that maybe you should have used an entirely different framework for this system and make a note to research the alternative framework for your next system.
And this is what programmers call "focus": Bouncing up and down among five or six layers of abstraction, hopefully doing no individual task for longer than five minutes at a time. (After all, this is programming: If you've got an hour of rote typing to do, why isn't there a macro that can do it for you?) But you're focused on something, because the hours are flying by and if someone interrupts you, you tend to want to throw things at them.
And perhaps this is why we programmers have such trouble with focus: The state we call "incredibly productive focus" is actually oddly difficult to distinguish from ADD. But it's focused ADD, and that's the secret.
For anything where flow might be important, I don't use the pomodoro and I block out a stretch of time. I work on those tasks at home as a large open plan office becomes impossible.
Whenever I read about people having trouble maintaining focus or I see people around me with the same issue, I wonder what it is about my life experience that may have made the difference. There's a few things that spring out to me:
1. I was introduced to meditation at a young age
2. I spent a lot of my youth playing pen and paper based RPGs
3. I spent a lot of my youth reading novels when I wasn't playing pen and paper RPGs
4. I spent a lot of my youth painting miniatures for table-top war games and playing said war games when I wasn't reading or playing pen and paper RPGs
A common thread I can see through all these activites is that one is using one's mind, one's imagination, more so than having images and entertainment thrust at you by a monitor or TV.I believe these activities assisted in cultivating an improved ability to focus generally, and particularly to focus on tasks that are not immediately accessible. This focus has served me well in my professional life.
#!/bin/bash
if [ -n "$1" ]; then
task="$@"
else
task_file=$(mktemp)
export task_file
rlwrap bash -c 'read -p "current task: " -r task; echo $task > $task_file'
task="$(<$task_file)"
rm $task_file
fi
# don't keep a handle open to current directory
cd "$HOME"
echo "$(now): $task" >> ~/.pomodoro
(
sleep 25m
messagebox 'Pop!'
) &
echo "25 minutes starting now"