> Now you understand a lot of what's been wrong with software development at places like MS over the last decade and more.

I don't think that actually _is_ the main reason why MS had(ve) so many problems.

In the end, people have minds and brains, and they know (at every layer) that the system is bullshit.
Whatever is written on you performance review, your manager will know what he will need to write (or advise you to write) to get you a promotion, if he thinks you deserve one. And the same apply for the manager of your manager, etc.

Don't forget that in places like MS (or other big corps), you cannot really climb the ladder faster that the others. Everything is more or less ruled by your years of experience, etc. At most, good performance reviews will help you get promoted a tiny bit earlier.

This clearly discourages very talented developers. Let me clarify this.

At most companies I've worked, there are always some minority of really bad developers, a majority of OK or good developers, and a minority of really talented one.

Very roughly that would look like:

- 10% bad
- 80% OK/good
- 10% very talented

The bad developers usually are there since a while (say 5/10 years). They learned to stick to _their_ little tiny project and don't do much aside from it. They just do the bare minimum so that they don't get fired and that's why they are here years later.

At MS things were really different. There were no bad developers..., and no very talented developers. It was, like, 100% of good/ok developers.

Why?

Because MS is not driven by technology. MS is driven by business.

1. MS thinks every developer is replaceable by any other one, given some warmup time.

2. MS thinks the technology is not important, only the final product/feature is.

3. MS lives in a completely isolated bubble.

Now let me explain how these two points made MS fall this low. Of course this is my personal view, and I guess some won't agree.

1. MS doesn't value developers as individual contributors. MS values "teams", as a workforce. You will never be valued individually. You team will, or you project will, but not _you_. MS won't try to understand how you feel, what you think, or try to make you stay. It's just too big of a company to care at the developer level.
This means the turn over at MS is high, and the management is used to it.

2. This may be a personal view, but most of the time when I work somewhere, I don't give a shit about the business itself. You can build a rocket, a vacuum cleaner, or whatever, I don't care. I only care about the IT side of the project: are there interesting challenges? Do I like the stack? how old is the code base? etc.
At MS, a developer is expected to think exactly the contrary. You should have no interest in the technological stack, and only care about improving the product.
This means:

- most of the time you won't have the choice of the technological stack, this is demotivating

- you will have to use a stupid stack, because a somehow similar previous project used it and it worked (someone said so)

- you will never innovate technologically, that's of 0 business value.

3. Now this is a really funny one. At MS, management lives in an other version of internet. They read only MS friendly & specialized websites, newspapers, etc.
This is absolutely insane. Guys are absolutely sure that the whole internet is super focused on what they do, deeply care of every single thing that they say, etc. They will send mails like "look at the awesome article that is on the front page of TECHCRUNCH! the whole internet talks about us", and link you to non technical, pure BS article written by a guy paid by MS to write it.
Funny sidenote: When I relocated to an other country with MS, I had a girl from a local travel company show me the country. She was a contractor, and explained me that she had a training specially for MS employees, where they would teach her not to send mails through gmail, not to send maps using google maps, not to show her iphone, when talking with MS employees. The management of MS lives in its own bubble, they are 100% sure that bing is used by everyone, they are 100% that the new Skype is awesome, they are 100% that windows server rocks and all modern websites use IIS.