04-26-08 - 2

A lot of the companies I'm talking to these days use a semi-democratic model (Valve and Google, for example), where in theory people from the bottom can push good ideas and decisions are made by concensus. I have no idea how well it really works at those places, but I find that these kinds of things almost never wind up working as real democracies. The theory is that all the agents act and think independently, and thus ideas are judged only by their merits. That doesn't happen because people are human. A few different social problems hold it back.

Groupthink almost always develops in these groups. What I mean is a certain style of thinking becomes accepted by the majority and no longer questioned, and people find it easier to just go along with majority. This style might be something like love of STL, or love of very simple exposed C-style interfaces, or just the general concept that C++ is broken and many of our woes are due to the language, or whatever. It's some belief that's not really rational and becomes a common framework for everyone and the group thinks similarly. Groupthink develops for various obvious reasons. The senior people tend to hire new people that think similarly to them. The new people are taught the current way of thinking. People who think differently get in big debates all the time and get sick of it and just stop objecting. When the majority is against you, you tend to just stop talking.

Leaders and followers almost always develop. Some people are just naturally pushy, or very respected, or whatever, and take up leadership roles even in a putative true democracy. Similarly some people are just weak or natural followers or just lazy or don't care, and so rather than really be independent they just follow one of the leaders. This means that a few loud voices tend to dominate and you don't really get a bunch of independent thoughts on problems. This is totally independent of any formal heirarchy, and of course it develops in social groups of all types. At a place like Google, for example, I'm sure that many people adopt the "Larry and Sergey" way of doing things because it's easier to defend.

A lot of the problem comes from subconscious laziness. Really thinking independently about various problems is very tiring. Most people stop doing so and just go with the flow because it's easier. Usually this isn't even a conscious decision and people aren't aware of it. I've commented before about how when I'm out cycling by myself, sometimes I'll zone out and stop paying attention to my pace, and then all of a sudden I wake up and discover I'm going like 5 mph. The human mind has a built in subconscious desire not to work; it's very lazy, it's designed to conserve your energy for the next big chase or fight. In intellectual work, if we don't force ourselves to be active and vigilant in our thinking, we slip into lazy habits and just go with the flow and stop thinking for ourselves.

One way to fight this is turnover. You want to hire new people with very different styles from your core. This goes against most people's hiring practices who do retarded things like favor candidates that use the same coding convention as you. That may make it slightly easier to integrate someone, but it's much better for the health of the group to bring in people with different ideas. Then when you do hire them, you have to be a bit careful to not beat them into the groupthink mold. You also want to listen to their ideas on how you do things, because they bring a very valuable fresh mind. Often when I was moving around from company to company I would come into a new place and they would have some absolutely insane onerous process that made it so hard for the artists to work, and everyone there was just convinced that "that's the way it is", and I would be like "whoah whoah this is insane, you shouldn't have the artists spending 2 hours to sync every morning, or running a debug build at 1 fps" or whatever. Of course the newbie will also be a bit retarded since they don't know your process, so you have to be smart about what you listen to and what you ignore. When I was hiring I mostly did this the "bad way" ; it's definitely tricky to balance the immediate usefulness of hiring similar people to the long term health of keeping a diverse population.

Another problem with groups is that people have a tendency to develop an "us vs them" mentality. This is also subconscious and it pervades all groups, not just these companies. People have an innate desire to be part of a tribe and to feel like they're banded together against the rest of the world. It's a sort of pack mentality, and it leads to being very defensive of the practices inside the group and being dismissive of voices from outside the group.

Part of the "us vs them" mentality comes from creating myths about how great your practices are. All successful groups tend to over-value their practices and think the way they do things is great because they've been successful in the past. Well, maybe so. More likely your success is due to A) good people B) good circumstances, and C) luck. Human beings in general vastly underestimate the amount of variance in success, and look too hard for direct cause & effect relationships that often do not exist. This is most obviously retarded in gamblers; anyone who wins a hand of poker makes up all kinds of reasons why their style somehow led to that success. It's less obvious in endeavors with lower variance, but still present. For example, maybe some of your practices really are good, but many of your practices may not be; people tend to associate success with every single practice and elevate them all to the magic formula that brought that success.

None of that is to say that the democratic models are a bad thing, obviously they're very cool and successful if done right. But the idea that decisions will be made rationally and on their own merits is a bit of a dream. And how well you fit in is not so much about how you work in a democracy, but about how you meld with the dominant thought camps in the borg network.

No comments:

old rants