At work, I pretty much get paid to be really good at context switching. It’s not only what I can do that counts, or the fact that I can do it fairly quickly, but I need to be able to very very efficient switch from one subject area to something completely different given the correct external stimulus. This isn’t something I’m incredibly familiar with, and the learning / adjusting process has been slightly frustrating.
During college I could very easily dedicate blocks of time to task X or project Y, like just about everyone one. You allocate yourself an hour to work on this homework, or an afternoon to focus on this project, or even just a few minutes to go through your email and catch up on stuff. When I was at RPI I was “on-call” for a variety of servers that could send me text messages reporting outages/ downtime, but I never had to completely drop everything and run to the Union more than a few times a year. It was good exercise at the time. Every now and then I’d get an urgent looking email from a student or someone else out there needing something from me and I could decide to respond or ignore it for a bit, usually something I’d determine based on how involved my response would be.
When I’m working I don’t feel like I have the luxury to ignore things to give myself time to “wrap things up” with whatever I’m working on. This leads to a process scheduling implementation that looks a bit like a preemptive priority scheduling system. This is great for those high priority things that come in I need to address, but stinks for the low priority projects which are often the most interesting and personally rewarding.
As an example, I’ve been writing a piece of Python code that would have probably taken me at most an afternoon if it was just me, Ruby, and my computer. Perhaps a can of coke in their as well. So far it’s been 2 weeks and it’s maybe 80% done because I can’t seem to work on it for longer than 5-10 minutes before something comes up. Ok, that was a bit of an understatement. I usually have less preemptions from 8am – 10:30am, but I’m not the most creative at my programming during this hour (readas: I have motivational difficulties most mornings). I’m also usually done being preempted at 5pm, but at that point I’m fairly upset that I’ve produced 10 lines of good code over the last N 5 minute breaks.
I’ve yet to figure out any good tricks to context switching more effectively. If I leave all my Chrome tabs open in another window I can usually pick right back up where I left off on the internet, but my shell tabs don’t have the same mental resilience. Perhaps I need to work on a better mental process scheduling algorithm, but a lot of them rely on the ability to estimate the time required to complete a task and when I’m programming that’s directly correlated to how motivated / inspired I’m feeling which isn’t easily quantized. More thought required, that’s for sure.
Good night moon.