link
Andrew considers Fred Brooks's notion of conceptual integrity in software: the importance of a consistent underlying vision. Brooks argues that this integrity can only be achieved in software when no more than two people take control of the design (and keep that design alive during development).
I agree wholeheartedly. Whenever people design together, but without a very deep shared understanding, their subtly different motivations and visions are inevitably amplified into huge, gaping dissonances during implementation. It's not too hard to get a thorough shared understanding of a solved problem: you can simply take a few people who went to similar kinds of schools and read the same textbook, and they will probably be able to build you a suspension bridge that works.
But if you are building radically novel kinds of software, the vision of what that software shall be has probably originated in one individual's head. Furthermore, even if that person is an excellent communicator, her vision is probably implictly premised on all sorts of subconscious assumptions that even she can't describe. But as you move from idea to implementation, many of those assumptions will be questioned. The right answers to those questions depend not just on intellect and facts but on intuition. Thus even if a large part of the grand vision has been communicated, a software project will suffer when parts of the implementation can't be checked against the original intuition.
This makes the case for having one person lead the design of a software product. Can you also get away with using two people? I think you can, because when two people know each other very well and respect their own and the other's strengths and weaknesses, they become very aware of the limits of their own intuitions. They can accurately guess how the other will feel about using adjacency lists vs. boundary sets to implement tree structures, or they know to ask. Over time, the shared understanding that develops between these kinds of collaborators is a unique, wonderful, and powerful thing.
Three people, however, make a group. First, it is twice as challenging for each participant to develop his personality such that it best meshes with the others. Second, the question of whether to involve the rest of the group in a given decision at least doubles in complexity. Instead of asking 'What would Bob say?' We now need to ask also 'What would Alice say?'. In between, we have to recall all sorts of information about Alice, like what her last experience with an issue like this was and whether she is in a mood today where she will passively agree to any suggestion rather than risk a confrontation. This information probably takes the place of similar information about Bob in our short-term memory.
These added scaling costs are what I think makes 3+ -person design collaboration so difficult. There are ways that we can attend to a singular collaborator that simply become too difficult with 3 or more people. Developing a meaningful shared understanding goes from being something that two mature people can excel at to something only a rare lucky few can pull off.
Personally, I have always felt more comfortable interacting with one other person than interacting with a group. Part of my ineptitude (often manifested as shyness) with groups probably comes from growing up as the only child of a single mom. It takes me a while to get comfortable with a particular group of folks, but I can very quickly get a good reading on person. Consequently I am better in chats, dates, and interviews than parties. Consider yourself warned. 