Everyone in Software and IT industry are exposed to the what i call as “Context Switching” problem. Bosses are so adept in giving different kinds of tasks to the “makers”, they often dont realize whats involved in the context switching. Before i move on, i was reading a very interesting article from Paul Graham on the “Maker’s Schedule; Manager’s Schedule“. Indeed, he was right on to the point of where the programmers (aks Makers) and managers spend their time and what does “meetings” mean to each of them.
We very well assume that most of the programmer’s have 8 hours of work time in a day and schedule all the work according to it. What we very often forget to take in to account are the obvious and non-obvious tasks. As Paul says, programmers one piece of work/task is normally in the 1 day chunk (for some at least, it’s in 1/2 day chunks) and any disturbance in that 4-8 hours of time proves to be very costly. We all want to concentrate and make sure that the entire program is in our head till the time we are done with it. This phenomenon is very well explained by Paul in his article “Holding a program in one’s head“.
When you start your brand new day at office thinking over a problem or a algorithm, your boss calls up and asks you for a status update because his boss asked for a team update. Well, that is the request you need to honor without a question. Usually the calls will not be 5-10 minutes but goes for minimum of 30 minutes to 1 hour, because we are trying to solve a problem over the phone or in the meeting room.
- Meetings,
- Weekend vacation talk,
- Extended Lunch and coffee time,
- Status reports to manager,
- Status report to customer,
- Helping the Sales and Marketing Team,
- Attending the personal calls
- etc… (i am sure there are 100s of such things)
The tasks, your manager thinks of as 10 minutes actually takes 1hour and after sending the sweet report or tools comparison to him, you again head down to start writing your program and after 1hour you get a call to say that the report format should be changed so that he can submit it right away to his boss. Phewww…. you did that one too. Now the time is almost, 2.00pm and you really want to concentrate and do the REAL work. All in all, When i analyze the average programmer probably gets around 5 hours of quality time out of 8 hours in the day time. No wonder, we often end up working late nights just before the delivery. Many programmers has the similar habit of working in the dark/late hours. Yes, that works perfectly. No one to call you or ask for reports or for help. The only thing that you really think of is the problem before you.
I work on a project which has a very tight dependency with the environment(installed software on the machine) . Every thing installed on a machine matters and a lot of legacy code is maintained from past 15 years or so. The environment is so critical that if one installed the required software in anyway other than the prescribed order, you may need to burn the mid-night lamp to find some non-obvious, strange and scary system behavior. Of course, initially i was under the impression that the software system MUST not depend on the environment, but as i got into the system, i believe that some times the dependency just exists (due to several legacy apps and unimagined integrations of different products).
Context Switching is one project impedement that Agile Methododlogy and Scrum claims to remove. Scrum recommends the values where the team has a specified time for meetings and tries to decrease the buerocracy in th project against the traditional adhoc meetings and untimely calls for context switching. Of course one can say they are following Scrum and still do the traditional way, but i have seen this working in my experience.
Did any of you have such problems of Contect Switching ? What do you do to come over it ?