I don't agree. At least, I don't see the problem the same way.

Companies become more complex as they get bigger, and morally ambiguous as they get larger, and once a company reaches the point that it's making hundreds of decisions per day that affect other peoples' lives, it's impossible for it not to fuck a few up. Look at what happened to Google. It hasn't actually become "a villain", but they've made some very public mistakes (Real Names policy, dropping the ball on
"Real Games") and some catastrophic private ones (implementing Welch-style stack-ranking in "calibration scores"). Google was designed by good people with the best intentions, and this stuff still happened. It seems hard not to have cataclysmic fuckups on a daily basis at a certain size.

For a semi-related side note, I'm starting to agree with the Yegge hypothesis on codebase size: it's not that certain programming techniques (IDE vs. no IDE) or language properties (static vs. dynamically typed) fail "at scale" and others don't. All do. Largeness in a codebase is uniformly undesirable; it makes pretty much any programming environment, language choice, and development methodology go to hell. I've yet to see a programming environment where programmers (a) have to interact with a genuinely large codebase (and aren't working in a well-carved-out walled garden) and (b) enjoy their jobs. Once you have too much code, maintenance becomes the majority of the job, and per-programmer productivity falls to 10% speed (~15 LoC per day is commonly cited, although LoC is actually a horrible measure seeing as codebase size is a problem, not accomplishment) and morale goes into the toilet; programmers are unusual in the working world in that their happiness is positively correlated with how hard they are working (or, I should say, able to work). The only long-term solution is the Unix philosophy and small-program methodology, but MBA types seem to prefer huge, over-ambitious, all-or-nothing monolithic projects. So small-program Unix philosophy has been losing for a long time in favor of huge, object-oriented mudballs, even though the small-program way (each program does one thing and does it well; and if you need complexity, you build a system and give it the respect-- modularity, thought given to robustness and fault-tolerance-- that a system deserves) is an objectively much better way of doing things.

Companies may have the same illness. Bigness may become terminally inefficient in the near future. To make large companies work well, you have to carve out "honor's colleges" (to get the best people) and walled gardens and sandboxes and research labs, but that effort is guaranteed to meet political resistance simply on account of the complexity of the company. Imagine if a large, boring technology company decided to reinvent itself and really get behind R&D and put 10% of its engineers into blue-sky R&D work. It would be great for the company and society in the long run, but the political fighting would be immense. You'd have a sudden airdrop of desirable work/jobs, you'd have powerful people pledging to support the change only if their proteges got jobs in this sexy new research division (so the positions of power would be allocated politically rather than on merit and leadership) and the conflicting demands and requirements coming out of big-company complexity (any time an initiative needs approval, the gate-keeper will ask for some payoff, and usually an inappropriate one that compromises the initiative) might end up miring it in a bog from the start. I'm not saying it couldn't work. It easily could. But the political problem would be harder than anything else.

It wasn't always this way with companies-- a lot of things were achieved by large companies because only huge corporations could even attempt them-- but it might be becoming that way. With the rapidly increasing technical complexity of modern work, we might be reaching a point where for a company to hold $10 billion worth of value and employ 15,000 people is no longer effective or desirable. Old-style huge companies were a lot simpler, because the bulk of their people were doing the same grunt work. In a modern "knowledge economy" where people are doing different work, and in which the work of poorly-motivated or unskilled people is of negative value (rather than merely low positive value coming from the weakest performers in typical "commodity" labor) huge companies may just be unmanageable.

It's not about becoming "the villain" or having to make "hard choices". It's just about complexity. It's about the fact large, powerful things pretty much always underperform relative to our expectations of them because complexity imposes so much drag, and it's hard to see this until one has a good sense of what unmanaged, undesirable complexity (that's 99% of all complexity) looks like and where it comes from. Huge organizations don't become "villainous" by intent. They become complex and inefficient and reach a point where the only thing anyone can agree on is growth-for-growth's-sake, which macroscopically makes it look like the firm is driven by sociopathy and hubris. But it's not that simple. There are a lot of well-intended, talented people in these megalithic companies with great ideas they'd love to implement. The problem is that the only thing that seems to come out of the company macroscopically (instead of being cancelled out by internal forces and drag) is the one thing everything in the company can agree on: more money and power and headcount and just flat-out size for the company, under the assumption that increasing the firm's "bigness" will improve the position (and compensation) of each person within it.