Not the Microsoft I Once Knew
It's been three years since I was an employee at Microsoft. I went back to Microsoft to do some contract work six months ago and my contract is expiring next Monday.
I wanted to return for a short time to reconnect with my former Microsoft co-workers and learn more of the upcoming technologies. In the process, I discovered that this was not the same Microsoft as before.
In the three years, Microsoft overturned the stock option program and, with a series of salary hikes, raised the historically low salaries of employees substantially--like 50% or more over the course of the years. Employees are paid as if the company respects them.
The other upshot of this compensation program is that Microsoft is now, for many employees, a permanent destination, not a "golden handcuff" to leave after options have vested.
Also, employees are simply smarter--they are generally more knowledgeable and studied about software... It could be the higher compensation that is drawing better engineers. There are many more highly degreed professionals. The proportion of master's and doctorate's is definitely far higher; and Microsoft is willing to fork over money to buy out computer science luminaries to work for the company. Microsoft has "architects" everywhere now, so that there is actually a comprehensive overall "design" to software; this is a significant as the introduction of "program managers" in the late 80's.
While the stress level hasn't diminished much, there is also more respect for a balanced lifestyle. The average age is older and Microsoft is getting out of the adolescent phase.
Microsoft has become more customer-focus, in tandem with Steve Ballmer's "Delight the customer" mantra. Each employee is required to perform some community (or customer) service each week, and it all is included as part of the annual review process.
There is much more involvement with usability, focus groups, customer research and so on. I talked about personas, some time ago, which helped employees visualize the customer. In the process of discovering problems consumers were having, Office had initiated their error reporting service to actually see what errors people were getting and fixing.
I wouldn't attribute all this to SteveB's work, though. Bill Gates had a hand in the change with his "Trustworthy Computing" memo and initiative a couple years back. I completely reprioritized Microsoft's values and actually placed new ones into the mix.
"Trustworthy Computing" was significant, because many customers (partners, competitors) distrusted Microsoft. This is partly due to the companies past aggressiveness and ethically questionable practices. Some employees felt that they did not share the same values at Microsoft.
It comprised four different trusts that may have been periodically breached by Microsoft: security, privacy, reliability, and responsible business practices (corporate integrity).
Microsoft software lacked much security before the arrival of NT; Windows 95 introduced a false means of security, a login prompt, that a user could easily cancel. Now, security is such a high priority, that it takes precedence over features; and each major product has a team dedicated to TWC in some fashion.
Reliability was also something that Microsoft did not concern itself with. Microsoft faced a bug crisis in the 1980s. Bugs went out of control, turnover was great, an early version of Word was recalled. Microsoft fixed this crisis by providing a 1:1 tester to developer ratio, and improving the testing process. Nowadays, the code design and quality of newer products is absolutely top notch (I am thinking of .NET and Longhorn). As I mentioned earlier, there are "architects." Problems are attacked at the source now; there are more tools, under the assumption that developers can't be trusted, because the complexity of the overall system will overwhelm any person. Managed code, which Microsoft is moving to now, does not even allow traditional errors like memory leaks, lack of type safety, and buffer overruns. Microsoft products undergo layers of code and style checkers, and other breadth tests before the code can even be checked in. These checkers examine code for classes of bugs by reviewing the source, by looking at the IL or assembly, and by examining the file metadata.
Corporate integrity is a new thing--this is treating customers, partners, and competitors right. It also refers to, I believe, proactive adherence to antitrust laws.