Microsoft is not only the world's largest software vendor; many pundits would put it top of their list for crimes against good coding practice.
Microsoft regularly comes under fire – whether for shipping software too late (Windows Vista, SQL Server 2005) or too early (Windows ME), or for releasing products that are too insecure (Outlook Express 5.5 and 6.0, Internet Explorer 5.5) or too locked-down (Vista again).
The software giant rarely gets a break from its critics – who complain when it makes too few changes (Visual Studio 2003) or too radical of an alteration (Office 2007's ribbon interface), or when it writes code that is too bloated and complicated (Vista one more time) or too dumbed-down (Bob).
Obviously, it's not that Microsoft lacks for talent among its 31,000 developers. But the sheer size of the workforce, and the number, heft and widespread popularity of its products conspire to create an environment that's just not conducive to efficient coding.
However, if you believe executives within Microsoft's server and tools division the software vendor has become a much more agile developer over the past few years. Led by that unit (which is still known internally by its old acronym STB or server and tools business) Microsoft has embraced new development tactics.
What sort of tactics? Well, things such as gathering feedback from users before embarking on the writing of any code. Or replacing and augmenting the conventional model of alpha and beta releases with its Community Technology Preview (CTP) program, which uses a "release early, release often" approach to testing software in the field. Or creating independent "feature crews" that can quickly build specific features and communicate directly with users about them.
"I don't know that there was an 'Aha!' moment," Soma Somasegar, senior vice president in charge of Microsoft's development tools, said earlier this month. "We just realised that we're building products for customers, not just for technology's sake. So the sooner we could engage with our customers, the better we could make it from an architecture, feature, quality and scalability perspective – all of the things that customers care about."
First fruits of the policy
That transformation, which began four years ago, culminated this week, when Microsoft formally launched the 2008 versions of Windows Server, SQL Server and Visual Studio. Each of these was developed using some or all of the new techniques listed above.
Sceptics abound. For one thing, despite its new commitment to user feedback and development flexibility, Microsoft couldn't actually manage to release the three new products simultaneously.
Visual Studio 2008 has been available since November, while Windows Server 2008 was released to manufacturing earlier this month. Meanwhile, RTM on SQL Server 2008 was delayed by three months to the third quarter of 2008 – although Microsoft did issue a "feature-complete" CTP release of the database last week.
"Aligning the launch date was a PR exercise," said Greg DeMichillie, an analyst at Directions on Microsoft. DeMichillie, who worked as a developer within the STB for a decade, remains unconvinced that Microsoft has turned over a new leaf. "Clearly, CTPs and the other changes deliver a benefit," he said. "Users get earlier glimpses of products, and Microsoft gets feedback earlier. But the jury is still out on whether Microsoft is going to ship software more quickly and reliably as a result."
John Andrews, CEO of Evans Data, a market research firm focusing on development tools is also sceptical about Microsoft’s agility. Web-centric vendors such as Google and Salesforce.com are both more nimble software developers, he said. Even IBM tops Microsoft in agility.
"I believe Microsoft attempts to do agile programming where possible, but the reality of its situation is that the complexity and size of the code base prevents it from truly implementing that coding process," Andrews said. "Now it's a matter of making itself semi-agile wherever possible."
But Microsoft officials argue that being agile has less to do with shaving some time off a product release schedule than it does with being able to ship higher-quality software in the first release of a product.
Users who hear that kind of talk "may roll their eyes" because of the shipment delay on SQL Server 2008, acknowledged Ted Kummert, a Microsoft vice president who heads database development. "But we are driven by the end-quality we feel we have to deliver, which lives on far after the RTM party we have on campus," he said. The CTP release of SQL Server 2008 last week was the sixth by Kummert's team.
The SQL Server and Visual Studio development teams have switched over completely to CTPs. These interim software builds provide a faster opportunity for user feedback but aren't supported as extensively by Microsoft as full-fledged beta releases. The Windows Server group used a combination of betas and CTPs during the development of Windows Server 2008, according to Microsoft officials.
Banking on increased flexibility Another key element of Microsoft's development process for enterprise products is its Technology Adoption Programs (TAPs), which let companies get extensive hand-holding from the software vendor as they test and then go live with beta or CTP releases in production environments.
Microsoft's customer service and support team manage the TAPs, and the company gathers feedback from participants both in the form of informal comments and more quantitative survey-type data, said Rich Kaplan, a vice president in the customer service unit.
Some users who have worked with the pre-release versions of the latest new products said that they noticed an increase in responsiveness and flexibility from Microsoft.
"Almost everything that we asked for while testing SQL Server 2008 is now in the final product," said Umit Nazlica, database systems manager at Garanti Bank, a banking and financial services firm in Istanbul, that is taking part in the TAP for the new database. For instance, IT staffers at Garanti requested stronger resource management and governance capabilities, as well as data compression and encryption improvements, Nazlica said.
The bank, which runs 140 instances of Microsoft's database with 11TB of data, also participated in the TAP for the current SQL Server 2005 release. The testing process has been much better this time around, according to Nazlica. "We had a lot more time to evaluate the product," he said. "And we were more experienced about how to work directly with the people at Microsoft."
Microsoft's development teams "truly are listening and really take into account what is said," said Michael Ruminer, an agile development consultant in Boston and a Microsoft Most Valuable Professional with a focus on its Visual Studio Team System software.
Agile development can't simply be mandated from above, Ruminer said. But he added that when he talks to developers at Microsoft, he gets the sense that their managers are taking real action by removing obstacles to agility and needless process requirements. And he said the company has made significant improvements to the Visual Studio testing suite after outside developers complained about it – a step he saw as evidence of increased responsiveness.
He did note, though, that there is "a lot of discussion about whether Microsoft is actually pushing out CTPs too quickly." That leaves some users and third-party developers feeling overwhelmed, and pressured to try all of the releases, Ruminer said. But to him, the upsides outweigh the potential negatives. "No one is forcing you to install the CTPs," he said.
The way things were
Microsoft hasn't always been so responsive. For most of its history, the company adhered strictly to a development philosophy called Zero Defect, according to DeMichillie. Although that approach didn't explicitly forbid the company's development teams from using agile techniques, it demanded that they fix bugs before writing any new code, on the theory that fixing something right away would cost less in both time and money than addressing it later in the development process would.
Nor did Microsoft actively seek out advice from users. "Until about three or four years ago," Somasegar said. "Our philosophy for the most part was, 'I know what I'm building is right for you. So as soon as I have something I think is ready, let me give it to you. And then I'll wait for your validation that I've done the right thing.'"
"And the feedback that we wanted was, 'Here are some bugs,'" added Bill Laing, general manager of Microsoft's Windows Server division. "It wouldn't change the product."
In addition to adopting the CTP process, the Visual Studio and SQL Server teams have done away with siloed teams of developers, testers and customer support workers wherever possible.
Both adopted what Kummert described as a "feature crew" model, with smaller teams made up of five to 12 employees – typically, a program manager along with a few developers and testers. "That way, a group can really own a particular feature," he said.
Somasegar said that using a feature-crew approach, he was able to fast-track the development of some Visual Studio 2008 features related to building Office 2007 applications so they could be released in a service pack update for Visual Studio 2005 at the same time that the new desktop suite was released early last year.
Meanwhile, Microsoft's customer service organisation has been enlisted by the STB units to gather and analyse feedback from early users. Kaplan said the findings are then shared with development managers at so-called Red Zone meetings that "absolutely help drive release decisions." The name was chosen, he noted, to emphasise the importance of bugs that need to be fixed before products are ready to ship.
Not everything fits perfectly into the CTP model. Laing said the Windows Server team will continue to rely on formal beta releases, even though they take longer for Microsoft to produce and for users to install. "I think it's a much bigger thing for a tester to roll out a piece of infrastructure like Windows Server," Laing said. "So we release both CTPs and betas, but we offer better support for betas to encourage testers to actually go into production with them."
That process worked well for Continental Airlines. during the development of Windows Server 2008, said Dawn Getteau, one of the airline’s system architects. "The release cycle was just right for Continental.
"Even though we deployed the Windows Server 2008 beta in our production environment, it takes time to go through our change management, testing and validation process."
And Microsoft has also set clear limits on how flexible it is willing to get. For instance, despite last week's announcement that the company would release the details of some of its key APIs and communications protocols to rival vendors and open-source developers, Somasegar said he has no plans to accept external contributions to the source code of Microsoft's .Net programming framework.
"We want you to be successful, which is why we'll give you access to the .Net source code," he said. "But I don't know how to take input from a bunch of outsiders, pull it together and ship it in a timely manner as part of a product and then say to customers, 'Hey, please take a bet on running your business or home with this software'."