I’m going to be starting a new job on Nov 1, 2003. My new boss has kindly invited me to meet with his team for a discussion of how to design the new war room. In the spirit of agile projects, which reject expensive UML tools in favor of cheap whiteboards, I favor cheap 3 by 6-foot tables for each developer versus expensive monster desks. This gives each developer 18 square feet of workspace. Also, using a table instead of a desk let’s two or three developers gather around a monitor without their knees hitting desk drawers. The tables should be away from the walls so that whiteboards can be easily accessed for impromptu UML sessions and GUI sketching. The tables could be in two rows, facing each other, so that developers can look up and talk without twisting. The chairs should be where the money goes— comfortable ergonomic chairs with good wheels so that developers can easily roll over to their neighbor’s station.
The thing I’m excited about is the fact that we are having this meeting at all. In the end, my preferences will be just one set of ideas thrown in the pot. This is a good metaphor for how software should be developed: group design, the team is the architect. The design of the war room will be the team’s design, not the design of a chief architect on high. Especially for smaller teams, I don’t believe in the concept of the chief architect anymore. In the process of creating software, it is too difficult for one person to think of everything. A project suffers when it is the product of one person’s myopic point-of-view.
In my experience, a manager who not only understands what it means for a software team to be agile but also knows how to actively promote agility is very rare. I’m looking forward to being in such an environment.