Saturday, October 29, 2005

Private offices: what do they really compensate for?

Recently someone on the team forwarded a link to Joel's mini-essay Multitasking in the Workplace, a small rant against the problem of coworker interruptions with private offices as the solution. In case you haven't read many Joel articles yet, he really likes private offices.

I think Joel's focus on private offices is a result of his belief that superstar programmers create the best software, described in Hitting the High Notes (and other places). Superstars are most productive if they don't have to work directly with each other. In the High Notes article, Joel says, "A single good programmer working on a single task has no coordination or communication overhead. Five programmers working on the same task must coordinate and communicate." As if communication is an evil that should be avoided if at all possible, especially where it involves his superstar programmers (perhaps he's on to something).

Notice the diagram at the top of the article:

Best Working ConditionsBest ProgrammersBest SoftwareProfit!

Where is Best Team in this picture?

A number of people have commented on this, filling in the team side of the equation:

Scott Berkun discusses the relationship between teams and stars

Eric Sink replies with a choir analogy

The Five Dysfunctions of a Team says the fifth dysfunction, inattention to results, happens when team members put their individual needs (ego, career development, recognition) above the success of the team. This is a big risk when you've got a bunch of superstars working in isolated silos.

I think the most telling statement in Multitasking in the Workplace is "She does mention that open-spacers do frequently decide to 'interrupt themselves' to participate in another conversation that they overheard, something which is probably net beneficial for the team's productivity but which drives me crazy." This implies that he's not going to encourage behavior that boosts the net productivity of the group! How can individual productivity possibly matter more than the net productivity of the group? I don't get it.

This isn't the first time Joel has heard stuff like this. Several years ago he asked Tom DeMarco what he thought of pair programming contrasted with private offices. Tom replied that "groups of people who work in the same style on the same kinds of tasks will not distract each other." It's worth noting that Tom is the author of the excellent Peopleware, the book Joel often refers to when speaking of private offices.

I do agree that removing distractions is important for productivity. I'm just not sure I agree with Joel that those distractions are always necessarily my coworkers.

From observing our team's development cycles, I've found it most helpful to be "distracted" by on-topic conversations when we're in our analysis and design phases, and least helpful when we're in the coding phase. Joel's right… when your head is full of all the variables necessary for writing code, it's very expensive to re-load after an interruption. I guess my "it depends" answer means I also disagree with Joel that a developer is always working on code. Of course Joel is 45% more likely to say programmer than developer...

I think it's up to each person to determine when they need to be in "flow" mode and put on headphones, hang a do-not-disturb sign, or disappear for a while when they need uninterrupted focus. Telecommuting can be awesome for getting lots done when you know exactly what needs to be done and can do it all on your own.

I must admit that I have been strongly on both sides of the fence on this issue at various points in the past, so I reserve the right to change my mind depending on the circumstances. In the here and now, the benefits of sacrificing my personal productivity for the productivity of the team are quite clear.

That's enough for now… I really do enjoy Joel's articles, even the ones I disagree with.

Fixing my VS2005 RTM install

After downloading Visual Studio 2005 Professional Edition RTM from MSDN I debated whether or not to install it since I would have to go without all the cool WinFX goodies like Avalon, Linq, and Windows Workflow Foundation. In the end I broke down and decided to move to the RTM.

In addition to the 24-step pre-RTM uninstall instructions you will need to uninstall a bunch of other things like the Linq Visual Studio extensions (pull up the local documentation HTML file and click the link that pulls up the folder with the Linq VS uninstall bat file), Linq, Visual Studio 2005 Extensions for Windows Workflow Foundation, Windows Workflow Foundation, WinFS, WinFX, and I think I'm forgetting some more of them. Make sure you pass through your entire Add/Remove Programs list, because some of them aren't grouped under Microsoft.

In my case, I overlooked Visual Studio 2005 Extensions for Windows Workflow Foundation until after VS 2005 Beta 2 was uninstalled. Oops! But it appeared to uninstall just fine once I discovered that.

So I went through the Visual Studio 2005 Professional Edition RTM install and everything went smoothly until right towards the end when a dialog popped up telling me that Visual Studio 2005 encountered an error, and would I like to send it to Microsoft? This error occured while the installer was on the "Executing action:HxMerge_VSCC_v80" step. I continued with the installation, and it appeared to complete successfully.

But when I tried to start Visual Studio 2005, the splash screen appeared and then the devenv process went away! I noticed the splash screen showed Microsoft Workflow Tools on the list of loaded modules... I Googled the HxMerge installer step above and found someone else with the same problem with an earlier version. So I tried starting devenv with the /safemode switch, and sure enough it started! I went to Tools -> Options and saw a configuration section for the Windows Workflow Designer, which threw an error when I tried to expand it.

So, I installed Windows Workflow Foundation and Visual Studio 2005 Extensions for Windows Workflow Foundation on top of my VS2005 RTM installation, uninstalled both of the WWF items in Add/Remove Programs, and now VS2005 is happy again!

And no, VS2005 RTM doesn't work with the WWF designer. It reports an error and gives you an option to not load the module in the future.

Hopefully RTM-friendly versions of Avalon, WWF, and all the other WinFX goodies show up soon! If an RTM-friendly Linq update is possible without destabilizing the C# compiler, that would also be cool.

Friday, October 28, 2005

Hello world!

That is all.