The problem with management isn’t managers, the problem with management is bad managers.

So, on the one hand, we have what we might call the Lord of the Flies narrative - that Github's pseudo-anarchic non-management just enables people's worst traits to come to the surface; it doesn't remove power imbalances, it just hides them and makes it harder to challenge illegitimate use of that power because it's harder to identify.

On the flip side, we have what we might call the Milgram Experiment narrative - that authority positions are naturally corrupting, making belief in good management seem utopian; sure, we'd all like to be managed by someone that we respect, admire and trust, but we're just as likely to be managed by someone that we fear, pity or loathe, and the explicit hierarchy turns out to be just as hard to challenge as the implicit one and often even more so.

Lots of people seem to have decided that one of the above is the greater evil, and are willing to risk the other. Github is in the minority of companies that (hitherto) has seen the latter as the greater evil, or at least that is how the company has presented itself (I don't work there and don't personally know anyone who does, so I really can't comment on anything other than the rhetoric).

What we need is, boring though this may seem, some kind of balance between the two. In an anarchic company, people are going to over-step the boundaries (e.g. by reverting a co-workers commits due to a personal dispute). Some authority needs to police this. However, that authority only really needs to be reactive - it should punish wrongdoers rather than order people around on a daily basis. Most of the time, people do the right thing and can be left to get on with it, and hassling them while they do it is harmful.

To get overly philosophical, I think we can have the best of both worlds by borrowing the concept of 'complex equality'[1], which comes from the book Spheres of Justice by Michael Walzer[2]. In a nutshell, he suggests that we can avoid power imbalances by ensuring that natural and legitimate imbalances within different 'spheres' do not spill over into other ones. In the context of tech companies, we might have, say, a 'discipline' sphere where managers are in charge, a 'technical' sphere where engineers are in charge, a 'design' sphere with designers in charge, and so on. Being the top engineer doesn't give you the right to overrule a designer on a design question, and being a top manager doesn't give you the right to overrule an engineer on a technical question. If we're dealing with a personal conflict, this falls under the jurisdiction of management, and they should have full authority to resolve it. If we're dealing with a technical debate, that should be resolved by engineers. Resource allocation should be handled as democratically as possible.

Once you think in this way, it becomes obvious why some companies and projects fail: managers demanding authority over technical matters (e.g. estimates, software development workflow), engineers demanding authority over design (I'm sure we can all think of examples), or anyone demanding authority over management practices. These are all likely to lead to abuse and mismanagement; in any case they are unlikely to be optimal. What companies need is formal structure, but structure that constrains authority rather than simply entrusting it to managers and thereafter hoping that they turn out to be, against the odds, good ones.

[1] http://en.wikipedia.org/wiki/Complex_equality
[2] I am dimly aware that Walzer is controversial in some circles. I know nothing about him apart from the book, so please do not take anything I say as an endorsement or condemnation of any of his other views, which are beside the point here.