Ask HN: Context-switching
I am productive and feel good when I'm working on the same large project for, say, two weeks to two years, pretty much every day. (Releasing early and often, of course. ;) I have momentum. I get started the minute I get out of bed, and I have all the context there in my head, so I'm productive immediately. After the work day, my subconscious mind is merrily cranking away, understanding the problem more deeply, finding simpler solutions, seeing connections and opportunities. I track lots of little tasks and merrily bring them to completion. I've done this happily at several software companies.
Two or more simultaneous projects, though, and I have a problem. At a couple other software companies, I was a very bad employee: looking back, those were places that booked your time "50% on this client's project, 50% on that client's project" (or more subdivisions, even). Every time I switch projects, I have to exercise extreme willpower to absorb the situation and see what needs to be done. Each ramp-up takes a couple of days of agony to get some momentum. My subconscious creativity shuts down. The mental context never becomes rich and fertile. Work is just an attempt to force myself to do some error-prone hack. A couple days or a week later, it's back to the first project. After a few weeks of this, my head gets "noisy". I find myself losing track of details, unable to concentrate, making lots of dumb mistakes, feeling foggy and confused. Reading becomes slow and difficult. I find myself becoming stupid, lazy, and unimaginative, always craving some quiet time. Or better yet, some sustained focus time.
Right now, I'm in grad school (Ph.D., 2nd year). Grad school, it turns out, consists of running four projects simultaneously: three classes + teaching one class (or helping teach). It's all hurry-up-and-do-something-else. Each day is broken into three or four blocks, about one to two hours each: attending a class, office hour, grading, actually doing some classwork, blah blah. Each week is broken into about 20-25 blocks like this, sprinkled among the four projects. I seldom get much done during these blocks; they're too short to build momentum or finish something. The real work happens during all-nighters: dropping everything, force-feeding my brain for a couple days, delivering something hurried, and then flushing it out of my brain to catch up on the other stuff. (I remember almost nothing from my courses, even though I get A's.) I find this agonizing, unproductive, and demoralizing.
How have you dealt with this in your own work? Even outside of grad school, "makers" have to deal with "manager time". Don't start-ups involve constant context-switching? (Maybe it's not as bad as grad school, since the contexts are related.)
(If you know of any grad schools that run on "maker time", I'd love to hear about that.)
8 comments
[ 2.0 ms ] story [ 23.9 ms ] threadWell there's your problem! Get some of it written down, on paper, Evernote, or wherever works for you. You will definitely improve your context switching if whenever you need to switch gears you can review your notes from the last time you were working on that task.
I work as a freelance consultant for several clients, and I keep different notebooks for each one. I don't think I'd be able to manage this if I tried to keep everything in my head.
I write down lots of thoughts and tiny tasks in a notebook as I'm working, and check off the tasks as I go, but that's not really setting up for context-switching. When I'm writing code, I'm following inspiration: playing out the idea in my head, or rather, using the act of writing code to cause the idea to become clarified and completed. While ramping up and while coding, the idea is taking shape.
Maintaining notes designed to enable context-switching sounds like something I could try. This is probably the key. This would enable working in smaller chunks of time, too.
Weird: Right at this moment, the thought terrifies me. I wonder if I'd have to completely change my creative process to make such notes.
Hmm.
You might just be able to do a quick brain dump onto paper or software (maybe a mind mapping tool?) once you get to a good stopping point. It doesn't have to be everything - just enough to remind you where you left off.
When this starts to happen what I do is start making my own private scrumm burndown chart at the beginning and end of each day by adding a few rows to a spreadsheet with the estimated hours remaining on each of my development tasks along with a note on how I actually spent my day. I then review this with my boss and ask him whether or not he thinks I've been prioritizing properly and leave it up to him to adjust everyone's expectations (which is usually easy because I make sure to keep good records and structure our communications).
But while I'm fortunate to be working in a good team, there's no denying the psychic toll of constant task switching is disruptive. Unfortunately I know of no easy solution other than to spend the time to re-focus. Sometimes it can take a whole day of just re-reading code, making notes and fiddling around writing and rewriting little things before I can get back into a solid productive development flow.
Could that day-to-day continuity be achieved in a scientific/mathematical grad program? In a solo business?
Streamline reporting to "outsource" the crap normally required by you in the manager role - use work pipelines with highly detailed drop down representations of work status/problem status. Have your mentees/workers complete so that you can review & tweak where necessary to get the greatest amount of detail without having to review much -