I wake up in the morning and talk to boss number one who is currently in Australia, catching the last hour or two of overlap between our shifts. She tells me to do urgent stuff on one project even though I'm already doing urgent stuff on the other project. I scramble together fixes, get as much feedback as I can while my boss is online and delegate the remainder of the tasks to my other team members.
Then I switch to checking how yesterday's long-running tasks turned out. It doesn't happen every day, but when it does it usually has something to do with performance/speed testing or delivering e-mail. I write scripts to analyze the results, find bugs, fix them and set up a new scenario for the next test. Then it's time for lunch.
When I'm working from home I usually watch an episode of a tv show in front of my computer while I eat lunch, at the same time monitoring work e-mails and chat channels. Sometimes I deploy some websites while eating, since it's quite easy to do in terms of keystrokes and mental power required.
After lunch I work on some tickets, some of them related to the long tasks, some of them separate. I talk to my buddies and try to help them if they're stuck, and I pester them incessantly on the chat when I am stuck. I find weird behaviour on a staging site that I cannot explain away and dive in to find the cause. I end up downloading server logs, writing devil-invoking regexps and finally realize that I was an idiot and the behaviour is actually expected. I do all this while cleaning a server to prepare for another long-running task.
I go through my list of tickets, closing invalid ones and reassigning some back to the reporter, asking for more information. I have a tendency to write lots of information in the tickets, thinking that it will be easier for another developer to take over my tickets should I not find the time for it. But the other developers in my team are just as busy as I am, so that rarely happens.
Right around this time boss number two from California comes online and starts asking me questions about the long-running stuff I'm working on. I refer him to my tickets while I try to set up a new task. There's another problem I have to debug before I can start the new task, and while I'm working on that and chatting with my boss I deploy the project I'm not working on to two websites and quality check the new deploy.
Now that my second boss is awake he reminds me of a problem that I forgot to look at during the day. Something weird is happening, and I track it down to code that is not our own, so there is no user-friendly way to work around it. I ask my boss to notify our users how to work around the problem and then continue to set up the next overnight task, which is now ready to go. I fire it off.
There's always too much of everything going on; short-term work and long-term work. Work that can be done without a context and work that absolutely requires a context. Work that needs passing back-and-forth from developer to manager many times, or from front-end dev to back-end dev. Deploying websites. Performing quality checks. Sitting in on meetings that are not really relevant to my work. Writing API documentation. Writing wiki pages. If we have time to spare perhaps we'll even write a unit-test. The last time we had time to spare was 6 months ago.
I wait for a while to see if the overnight task will finish early, but of course it doesn't. I log out and close all work-related windows, although I check my work e-mail until I go to bed just in case a live site falls out of the sky.