Context Switches
Joel Spolsky responded to Dmitri Zimine's article about context swtiching. Dmitri talks about the developer pains caused by context switches and how abusing context switching can lead to lower productivity and less code for your dollar. Joel's response is that if you work against context switching, you are not being agile. He backs his reasoning with an example: a huge bug was discovered that crashed the browser for a loyal customer, so their 2.0 release was held back to fix this.
First of all, Joel declares that having two week release cycles is not agile, which I think is a faulty assumption to start with. Telling a client that they will have to wait two weeks for the feature of their dreams is not always the deal breaker situation Joel makes it out to be, in fact I would think most clients would be impressed if a company released a requested feature within two weeks.
More importantly, there is a huge difference between necessary and unnecessary context switches. The high priority bug fix that Joel mentions is indeed a good reason to switch contexts, however that doesn't mean that if some random person in Zimbabwe says that he wants them to add feature X before the next release, I would hardly think that would be a good reason to switch contexts and focus on X. There certainly should be some abstraction and safety nets in place to make sure that programmers switch context as little as possible but no less. To say, as Joel does, that a 30" monitor means that a great programmer should magically be able to switch context on demand for any reason is a gross over-generalization.
Abuse your car's clutch and it will eventually break, no matter how good of a car or how well you take care of the rest of it.

3 Comments:
Your post strikes me as a very misguided characterisation of Joel's. For example, you say that, "Joel declares that having two week release cycles is not agile, which I think is a faulty assumption to start with. The closest thing to that I can find in Joel's article is: "It's not supposed to be about rigid programming teams who are so slavishly devoted to their Two Week Plans that they can't rearrange their schedule a bit to serve the needs of the customer."
Joe'l point, which he makes quite clearly, is that he feels that, "Dmitri is only looking at one side of the cost/benefit equation." You don't really address this at all, except perhaps to agree with it.
Looking at the original post, the only alternatives were to halt the entire iteration, or to completely ignore the issue until the next iteration. That's not agile.
A better approach, especially when you're that early in the iteration, is just to make up a new story for dealing with this issue and find a story (preferably one that's not been started) that can be swapped out for it. I do this sort of thing not infrequently, and if done with careful judgement, and knowledge of what sort of long-term effects this can have.
9:38 PM, November 16, 2006
OT, but in case nobody's told you, your archive links are broken. Which is unfortunate for me, since I wanted to read everything!
8:05 AM, November 22, 2006
Thanks for the note on the archives, that has been fixed.
10:39 AM, November 22, 2006
Post a Comment
<< Home