Talking to Microsoft technical fellow and Team Foundation Server product manager Brian Harry at TechEd about Visual Studio 2013, the conversation turned to collaboration inside Microsoft.
Most product development teams inside Microsoft have tended to be in the same physical location (never underestimate the benefits of getting together over lunch to talk through your ideas). The problem is that not all smart people want to work in Redmond, for whatever reason; if you have a mould allergy, what I jokingly call the Pacific North Wet can be a difficult place to live, for example.
The Visual Studio team practices agile development; you can tell the section of the hall in their Redmond building where they have standup meetings by the scuffs and footprints on the bottom of the wall. However, the Team Foundation Server (TFS) team has a lot of remote workers.
"My team is a case study in distributed working," Harry told us. "We have a bunch of people in Seattle and northern California, we have one person in Chicago. We have people in Pittsburgh, in Ireland, Amsterdam, Bulgaria. There's one person moving to Turkey then a team in India and I just hired a guy in Australia. We've got people all over the place who need to collaborate and they work together."
Some of that inspired the new team room feature in Visual Studio 2013.
"It's an interactive space that enables a distributed team to stay up to date. It's durable which you need when you're not all on the same time zone," he said.
Why not just use Yammer? "It's a little different. The analogy I draw is that Yammer is to Facebook as team rooms are to Twitter. Yammer is threaded conversations, it's more email-like. Team room is more a quick chat to ask a question not that stream of consciousness — although you do get team events popping up onto the room. I believe there is room for both; you wouldn't get rid of Twitter in favour of Facebook or Facebook in favour of Twitter."
The Visual Studio team needs to stay up to date because they're delivering a new version every year and three fairly substantial updates to the product in between. And they don't only have to keep developers elsewhere happy: Visual Studio is what Microsoft builds its own products in — and those teams have to build more quickly. Look at how much the Windows Server team has crammed into its next version in less than nine months.
That could be why some of the most interesting features in Visual Studio 2013 are about developer productivity, like the new 'head up display' of related information layered on top of your code, which Harry called "the next revolution after Intellisense".
It's about being able to get better code quicker: "I've been watching myself as I've been coding. Even little things like it says how many references there are to a method; you can always find that out but it's right there now. A number of times I've been scrolling through the code and I see there are no references to that method — delete, delete, delete! It has dramatically changed the amount of dead code in my project. Or I can see that there's no test of this method I just made a bunch of changes to, so I know I ought to go fix that."
Harry talks about adding more indicators of what's going on in the code — many of which are key to the Microsoft development methodology.
"We want to do code coverage information, code complexity, static analysis… It's about 'what can we provide to help you think about the code. There is so much we can do with that that can be transformative to the developer."
Then there's being able to run load tests on Azure and do automated deployment with the newly acquired InRelease release management system. "It's a game-change in terms of knowing 'is this going to work?'," Harry claimed.
It's probably handy for Microsoft that TFS also integrates with Project and Project Server so you can see how long things are going to take.
"If you use Project to do your planning TFS will allow you to hook up to it and at whatever granularity you want to have, roll up all the work there into your project plan. We've integrated Project Server approval so if a planner has some task they expect to take a month, or a week, or whatever and the developer comes back and says it's going to take three weeks, that goes back to the planner automatically and they can approve it or reject it and go back and look at things again," he said.
The key is that it's not a separate system relying on manual input. "If it's not coming from the systems that are being used to do the work it's always going to be out of date, if it's not coming off live data it's always going to be wrong. You used to spend a week creating elaborate Gantt charts which, a week later, were wrong."
One of the many rumoured reasons for the delay in shipping Vista was supposed to be unrealistic deadlines for coding up features. With Microsoft 's new continuous development mantra, teams need to stay on top of schedules to stay on track.
But being Microsoft's own development tool means the Visual Studio team is already delivering features to other Microsoft teams, the way the reorg means nearly all product teams will need to do. The key to making that work well seems to be transparency — and getting everything connected.
"Our internal teams, like everybody else, want stuff from us," Harry said. "It used to be a very conflict-ridden relationship. People thought we never delivered enough and they always wanted new features and changes… The biggest change I made was I exposed my backlog. I said 'this is my priority order. If you think it's wrong, I can rearrange it. If you think it's right, watch me work down through the backlog.' The key is enabling the stakeholder to have that view."
You could legitimately describe the Microsoft reorg as about synergy. As in, putting all the OS development together makes sense because the network people can make core network pieces that the product people can build on top of. IE goes into Windows, Windows Phone and Xbox so have the people who build it connected to the people who build it into their OS. Synergy in the literal sense of working together, and getting more out of it than working apart.
Maybe Visual Studio isn't just the tool Microsoft uses to build its products but an example of how the company can work together successfully, within and across team boundaries.