Re-Engineering Microsoft’s Engineering

Microsoft reorganized its business structure earlier this week, adding four presidents to the executive bench. But the changes in Redmond go deeper.

Microsoft has reinvented its central process of building software from the ground up.

Microsoft will celebrate its 30th anniversary on Friday, making it not only the world’s largest software vendor, but also one of the oldest. The reorganization, which created three new groups with presidents reporting to CEO Steve Ballmer, was seen as a response to an increasingly bureaucratic and lumbering corporate structure.

But Microsoft is addressing systemic problems further down the chain, as well. In the last three years, it’s re-engineered engineering, as well.

In a meeting at Microsoft’s Professional Developers Conference last week, two Windows managers who are down in the trenches explained why they’re confident Windows Vista will ship on time.

“We took a look at our core engineering principles and processes, and made fairly dramatic changes,” said Greg Sullivan, a lead Windows product manager.

For example, the process now includes “quality gates” further down the development process. Sullivan explained that the model used to be that a program manager would specify a set of features, then a developer would write the features and check in the code. After check-in, it would be tested and debugged.

Sullivan quoted Microsoft Senior Distinguished Engineer Dave Cutler as saying, “If you don’t check the bug in, you don’t have to fix it later.” So now, according to Sullivan, “every feature has to meet a higher quality bar before it gets checked into the main build.”

Now, explained John Montgomery, director of the .Net development platform, code is checked into the “Windows tree,” a multi-stage process that he said catches a lot more bugs earlier. “Once you check code into the source tree, mechanical scrubbers look through the code for stupid stuff,” Montgomery said. Static code analysis software runs automatically on every piece of code, catching such things as errors in naming conventions or code that could cause memory overruns. “If anything fails, they fail the whole thing, and it gets pushed back to you.”

There are now a set of rules that engineers must adhere to, and a review process to guarantee that they have adhered to them.

“We used to say, ‘Don’t break the build.’ You can’t break the build any more,” Montgomery said.

More insight on Microsoft’s internal development processes comes from Greg Chappell and Chris Dickens, who together write the Software Test Engineering @ Microsoft blog.

Last year, Chappell wrote an entry explaining how the role of testers has shifted.

“Years ago, Software Test Engineers [STEs] were testers who had limited programming experience,” he wrote. “I’ve heard particularly frightening stories from Microsoft old-timers where Software Test Engineers were used as monkey labor- “Run this test fifty times, and call me if this breakpoint gets hit.” STEs didn’t need a strong CS background to get their jobs done- they just needed a lot of patience, and basic understanding of *using* computers.”

Now, he wrote, management is pushing to unify the role of test engineer with that of Software Design Engineer in Test. “This doesn’t mean software testing is going away — I only see it as a reflection of the increasingly technical nature of testing software at Microsoft.”

Michael Cherry, an analyst with Directions on Microsoft, isn’t sold on Redmond’s confidence in its ability to ship Windows Vista by December 2006. The product was released in beta in July.

“I’m thrilled that they’re continuing to look at the process and streamline it, not only to improve the ship date but also to improve the time to deliver. But they are overly optimistic schedulers,” Cherry said.

Cherry spent ten years working as a Microsoft program manager. “I remember the old process, and what it took to check code into a build, get the build done, triage bugs and work with the old tools,” he said.

To evaluate the changes these execs say they’ve made, he said he’d want to sit down with a developer who’s responsible for a feature and find out what the cycle time is now for getting a build done. He’s requested such a meeting, but he acknowledged that, “three hours sitting down with me is three hours a developer isn’t writing code.”

He said that the job of Microsoft executives for the rest of the week will be to convince developers that nothing about their jobs has changed. “On Monday, there were a bunch of people working on Vista who went to work with specific things they had to accomplish,” Cherry said.

“On Tuesday, they announced the reorganization, and that Kevin Johnson was coming to take over that group. The key message they tried to get out to everyone on Wednesday was, ‘You have the same to -do list. Don’t let this move you off the focus: to get Vista done.”

News Around the Web