Hiring the Wrong People
Several years ago, this famous rant by Bill Gates (here's a more readable version) made its way around the internet. What was remarkable about it was that Bill Gates himself flaming his underlings for many of the things everyone else was complaining about did almost nothing to improve Windows. What improvements were eventually made are usually attributed to many outside influences, especially Apple and the rise of tablet PCs.
This really isn't that remarkable to anyone inside the software industry. I've been an intern at Microsoft and I've seen all sorts of hilariously misconstrued practices and rules and regulations meant to bend employees into some magical definition of an awesome developer that is usually, itself, hopelessly misguided. Almost the entire modern business world runs on the idea that you hire someone and then tell them how to behave. It's an authoritarian mindset derived from the idea that employees should be obedient little robots. You hire managers to manage the employees, and when you have too many managers you hire department heads to manage the managers, and so on.
This is not how you manage creative people. Creative people should not be told what to do, only be given a general direction to walk in. You should hire a creative person because you want him to do what he was doing anyway. If your operating system is bloated, then hire someone who thinks that it shouldn't be bloated. You don't have to TELL that employee to make the operating system less bloated because they want it to be less bloated, so they'll just make it less bloated. If you don't trust them to do a good job making the operating system less bloated you shouldn't hire them.
In this context, the entire modern concept of a CEO driving the direction of a corporation breaks down. You do not drive the direction of a company by telling employees what to think. You drive the direction of a company by hiring people who think in the direction you want to go. Creative people work best when you simply let them do their jobs.
If you hire a web designer, you don't tell them what to do. You tell them what the end goal is, what the restrictions are, and let them figure out the best way to do it. The entire concept of a CEO going through potential website designs until he finds one he “likes” is utterly ridiculous since you just hired them because they know that! A situation where a manager can do an employee's job better than they can is extremely rare, because the people who tend to be the best at doing something are the people who are actually doing it. Just let them do the job you hired them to do.
If you hire a programmer to write a graphics engine, you don't tell them what order to implement features in. You don't even tell them what features you want them to implement, because someone else on your artistic team is supposed to know which features are needed, and the programmer is expected to prioritize those features properly because that's what you freaking hired them for.
If I hire an artist/designer to make a game, I expect them to go and make the game. I give them certain limitations, like budget concerns or maximum development time, but I expect them to be able to work within these restrictions or I wouldn't have hired them in the first place. If they don't, I don't hire a manager to make sure they do, I fire them (or move them somewhere else) because they aren't doing their job. The only time you need a manager is when there is a conflict of interest in the workplace or someone is actually doing something wrong. If most modern software companies have managers managing people day in and day out, then apparently those companies think that an employee is doing something wrong every single day. If an employee is doing something wrong every single day, why did you hire them?
Even worse is that software companies do not consider themselves bastions of creativity. This is a problem, because software companies benefit greatly from this, since programmers tend to be naturally self-driven. A team working on a project simply needs a designated team leader to keep things focused, not a full-time manager, and the team leader definitely shouldn't be spending his entire day attending meetings (coughMicrosoftcough). It's the team's project. They decide where it should go, and if this is a problem then you shouldn't have hired them. Google is an example of a software company leaning in this direction.
Creative companies need to trust their employees. Managers exist because employers don't trust employees. Software companies don't realize they're actually creative companies, and their employees hate this because the managers usually have no bloody idea what they're talking about, and we see examples of this over and over and over in the news and laugh at them. But we never actually look at it as a problem that needs to be fixed, only as an inevitability.
We can fix this. In fact, it was fixed almost a decade ago. Valve has no managers. There's just Gabe Newell and then everyone else. It works. If you happen to like Portal, I think you'd agree that it works really damn well. There is a significant chunk of the workforce that is not being utilized. The companies that do manage to utilize it are the ones that write the history books.