Well, I don't think hierarchy is prima facie evil. Conceptual hierarchy is how people think. The problem with human organizations (and "managers" and the bad rap they get) is that hierarchies are easy to corrupt by aiming at the top, and that they usually promote the wrong people-- social climbers instead of leaders.

Managers get a bad rap, but good managers (possibly 10-20%) are worth their weight in gold. Bad managers are disastrous. No managers is rarely an option. "Flat" organizations tend to devolve into young-wolf conflicts and evolve their own unofficial hierarchies. In fact, young wolves are more dangerous than managers; because young wolves' positions of influence are unofficial and therefore unsafe, those around them are direct competitors and they have more incentive to attack. Managers rarely sabotage their own reports, because they have the safety of being a level or two higher. Young wolves frequently do this to people who are technically same-level but haven't been around as long or had as much of an opportunity to establish themselves, but whom they perceive as long-term threats. If nothing else, you need good managers in place to prevent young-wolf conflicts.

The problem with traditional management, though, is that people promotions are pull-based (i.e. people get promoted by conning the top guys) rather than push-driven from below. The result is that people get promoted based on social climbing rather than real leadership, and managerial incompetence sets in very quickly.

I'd get rid of "performance" reviews. The word is loaded, and most workplace conflicts have nothing to do with performance. I've worked in elite companies, so this observation may be unusual, but I've seen maybe 20 people get fired in my career, and only one was for performance. The others were personality conflicts or other reasons. Dressing these issues up as "performance" issues just makes everyone angry.

Instead of reviewing "performance", which is code for "dressing up how I like you as something more objective", there should be a review along two axes: Skill and Impact, which are much more objective. I came up with a half-decent (IMO) scale for assessing software engineering skill here: http://michaelochurch.wordpress.com/2012/01/26/the-trajector... . The difference between 1.5 and 1.6 may be hard to assess, but that between a 1.5 and 1.8 is pretty much objectively visible.

Here's the kicker: these numbers are public. It shouldn't be "sensitive". Management ought to have the balls to say, "we think this person has Skill 1.7 and Impact 1.8 and here's why." What is kept private are reviews more than 12 months old, so that peoples' trends aren't visible for everyone to see. The other thing that deserves to be private (because it is somewhat sensitive) is assessment of a person's potential, but that's not what formal reviews are for. That should be handled informally, in any case.

Ok, now as for how the reviews occur... as I said, the problem with traditional management is that selection occurs on a "pull" rather than "push" basis. So instead of people having "managers", they choose sponsors who are typically more senior (although at the very top levels where "more senior" is hard to find, peers will do). Sponsors keep track of their reports' growth and advocate for them during the review process. The difference is that a sponsor relationship can be terminated at any time, by either side, without requiring anyone to exit the company, and that an employee can (and should) have 2-3 sponsors.

This system allows people to "vote with their feet". If someone's not a good sponsor, people move away from him.

What happens if someone has no sponsor? If you have no sponsor, you go before upper management yourself during review time. You advocate for yourself. If you can effectively communicate what you have done and what you will do, then you may advance. If you can't, you'll stagnate. (The purpose of the sponsor is to be an intermediate advocate with a better understanding of what the company and its management value, but there's no reason a person can't be allowed to advocate for himself.) Of course, if someone can't get a sponsor for a period of months, that's a sign that this person might need to leave.