Jason Zander on Visual Studio's Past, Present, and Future
InfoQ met with Jason Zander, Corporate Vice President for the Visual Studio Team at Microsoft during Visual Studio 2012's launch event held on September 12, 2012 in Seattle, Washington. This exclusive wide ranging talk covered everything from C99/C+11 standards compliance plans, to cross-platform support and how Microsoft tries to balance the needs of corporate developers with those of smaller, independent users.
InfoQ: You have stated before that you develop software independently at home outside of Microsoft. What kind of programming environment do you use there?
Zander: The software I've been using is Visual Studio Ultimate and the Team Foundation Service (TFS). For a long time I ran my own private copy of Team Foundation Server but maintaining a server is kind of a pain so I actually now have a hosted TFS account. Its not even necessarily about creating a really complicated application, to me some of the stuff I'm trying to do is really just use the breadth of the tool, to experience the tools the way a customer would.
So while doing this work I don't get the advantage of corporate resources or the advantage of the automatic answer, so if I find things where I think "wow that was just too hard, we need to go fix that”, I can provide that feedback to the Visual Studio product team.
So for the specific environment that I use, typically I'm writing a lot of C# and using VS2012 Ultimate and Team Foundation Service.
One of the things I like to do with my apps is go back and try out the store publishing experience so then I can work with one of our platform partners-- in fact you will actually see in the store publishing experience for Windows we actually added some functionality for authoring those applications to make it easier to submit applications to the store-- because one of the things I found early on is that it asks for a bunch of screenshots, it asks for a bunch of data. But originally we never gave you a way to set that content within Visual Studio. So one of the things I asked for was, “I want the actual in-product designers to help me figure it out” -- to help me figure out my store submission so that I don't get rejected just because I missed something.
InfoQ: Now, you are not the direct project manager rather you oversee the whole team. Are you able to apply some emphasis to those feature requests that you make? How do you insert your feedback?
Zander: Well, the way we try and do the planning of the product cycle is to make sure we have a product backlog, very similar to what we showed at the launch keynote. So we want the tools to actually speak for themselves. In general, what that means is that we follow a very disciplined approach. My job from a kind of executive level is to help set the strategy and the vision for the product to make sure we understand at the high level what we are trying to do.
Now after that I really do try and let the teams go in and figure out, "what would those goals mean?"--- but we've got just a phenomenal team. I get the benefit of coming in and showing Visual Studio to people, but there are a ton of people where it is their idea that I am showing.
So while I don't want to go in and just escalate stuff-- but the truth is that if I find something is not working well and I'm using it like a customer and have a problem, my guess is that customers will have the same problem so the team is always very good at fixing issues where they feel a customer is going to have a problem.
InfoQ: You have got the needs of the corporate market: Application Lifecycle Management, the need for developers to maintain large code bases, manage large development teams, and then you've got these smaller developers that may be more nimble. How do you balance the needs of corporate developers versus those of the smaller, more independent, developers?
Zander: To me one of the things is to make the technology approachable because we have a lot of very sophisticated functionality. So my goal is, how I can ease you into the environment and then get you to the point where you are ready to take the next step.
The Visual Studio Express products are a good example of this. They are very small and have a specific purpose for just building a Windows Phone app or building a Windows RT app; take your pick.
So that’s an example where I don't give you all the rest of the functionality, because what is provided is simple, easier to understand. But it still maintains the professional quality of the content behind it.
Same thing for Team Foundation Service: I can just jump in and use it for some of the tasks or some planning. If I want to hook up continuous integration, deployment, I can do that as well. We allow you to get on board at the level you want.
What I've found is that there are enterprises that have "internal start-ups". There are pockets of developers even in very large corporations still doing some really amazing cool stuff.
So I think in the end I think we want to build professional tools, get professional results, want to make sure they are available to students, who may be working in their dorm room on the “next big thing” all the way up to the Fortune 100 company that’s employing 5,000 developers. We want to make sure that we scale.
InfoQ: Let's talk about the calls for Microsoft to fully support standards like C99 and C++11. Microsoft has said something along the lines of: we've got a huge focus on C++ and going native that way and we don't have time or resources for full standards support. What is your take on this, and how does the company decide its approach?
Zander: Well, this is an interesting one where the way I look at it is we've actually participated in the standards bodies for a really long time. We believe in them. Herb Sutter is a really senior guy, we're sending a really senior guy with a ton of experience, we do believe in the standards process.
Now at the end of the day, we have a significant amount of things we have to pull in. One of things that I wind up having to do is help pick where we are going to set our priorities, and sometimes we have things that are still in the backlog at the time of release that will get done later. In this particular case I can say that we've used a lot of our resources to make sure we have first class support for Windows 8 and building out that environment. You don't often create a programming environment for a system like Windows that will have hundreds of millions of end users.
We definitely wanted to make sure that that worked well. So for example, if we came out with something that did exceptionally well at C++ coding standards but you couldn't use that C++ as a language to target Windows 8, that would have been really bad. That would have been the wrong kind of trade off.
So in that case we made the choice that really wanted Windows 8 to work really well, but it doesn't mean we are not committed to the standards.
InfoQ: That makes sense. Sometimes the community can rush to judgement, but that helps me get an understanding of your point of view.
Zander: Well, the way I look at is we are on the same side, we want to advance the language, we want to see the good kind of stuff coming through there. The truth is I think people are really passionate because we have a really exceptional C++ environment, the debugger, the IDE, those kinds of things. Even the people that write ultimately for other targets will often times want to use Visual C++ to do a lot of their daily development, even if at the end of the day they may check it into a system and run it through GCC.
I think to me the passion around this comes from, "hey I want to use your tools, I like your tools, I want to take advantage of some certain things...". The truth is we will get to those things, we do believe in the standards, and implement the standards. Herb's right, we also have other things we are also trying to deliver. Its a classic project management scenario.
InfoQ: That's a good point, and a good problem to have: the reason people are upset and/or arguing is that they want to use Visual Studio...
Zander: ... and I want them to [laughter]. I'm confident we will get a whole bunch of this stuff in. It may take a little longer than people are looking for.
InfoQ: Originally I understood Microsoft's response to be, “well we have limited resources”, but there is a lot of software out there that would benefit from full support of the standards.
Zander: Windows 8 is a huge focus for us...
InfoQ: ... and that’s not something you can turn your back on.
Zander: No, no... and I think that from the developer perspective you've heard Steve talk about the sheer volume of devices that Microsoft is going to bring in out there-- if I were ever looking for an opportunity as a developer I'm going to look at that and go “wow”. Its a new version of Windows. If I've got that many target users that I can write apps for, its just a great opportunity. You really want that. And again, if you are a C++ guy, you want to target hundreds of millions of people, and I definitely want them to do that.
InfoQ: Absolutely. Something that was interesting to me, I heard it mentioned before and then reinforced today was the rolling release schedule for VS2012. So at the keynote they announced Update 1 CTP this month and its planned release by the end of the year. Has it been decided how that schedule is going to work over the next couple of years? At what point do you say VS Next is what’s coming, and VS2012 is finished so that there will be no more updates?
Zander: Yeah, so it turns out if you look at our pattern, even with VS2010 we have been doing a flavor of this. When VS2010 came out, it was in April 2010, and it has been a couple of years since then. We actually released Productivity Power Tools on a regular basis and we released 4 feature packs which added additional functionality and within that we shipped multiple versions of the Windows Azure SDK, and a couple of the Windows Phone SDK.
Now I think that what we are doing with the VS2012 release is a more formal approach, and rather than making release according to a specific platform or particular event, lets actually see if we can get into more a continuous sort of delivery for that. So that’s what we are trying to accomplish. I think with respect to getting it done, you should expect to see Team Foundation Service shipping very, very rapidly and we are trying to pick the right cadence on the client.
We recognize that if Microsoft gave you a new version of Visual Studio every 3 days I'm not sure you would be happy with that. So we want to balance those two approaches and we are thinking a quarterly release schedule makes sense, but it won't always be precise because lets say a new Azure version comes out 3 weeks after the quarter... we may actually adjust the Visual Studio update so it is 4 months this time and 2 months next time. So we want that kind of flexibility otherwise continuous deliveries can pile up on each other.
InfoQ: You mentioned those outside SDKs: Phone, Azure, etc. Do you expect to tie those releases in with the VS2012 quarterly updates instead of releasing them as outside SDKs?
Zander: Yes, it would certainly be my preference... again I'm thinking about it from a developer's perspective, and I don't think I'd be happy if I were to get an update to Visual Studio followed immediately by an update for one of the platform SDKs. I want some kind of sanity on how stuff comes through.
The truth of the matter is we have our schedule for Visual Studio and the tools, and the platforms also have their schedules-- especially if you are working on a consumer platform like the Phone or Tablet OS, you take your pick. Those have certain selling cycles and places where people expect them so that there certain slots you want releases to fall into. I suspect what will do is manage on a case by case basis, but we'll keep to the principles of make it simple-- allow me to keep up with the new innovation.
You had asked originally about when would I credit it to a new version, there will be cases where we still do that. I still think that especially in some enterprises they would really like to be more intentional about when they pick stuff up, when they redo their tooling for their staff and they want a bigger kind of pop. I will also tell you adding something like Windows 8 support would have been extremely hard to do with VS2010 because there was just such a fundamental change in the technology. If we come along and make that level of a change again for a new technology base, I'm less likely to go back and update VS2012. Some of these other things we can add in between.
InfoQ: Would that mean the next version of the .NET Framework could be deployed to VS2012 as opposed to requiring VS Next?
Zander: Oftentimes we will do that if it is possible. Having VS2012 target Framework 4.5, and Visual Studio 2010 target 4.0 gives us another advantage which may be more subtle. VS is a managed application, it is written with .NET, which means if I want to go in and use the next version its actually kind of nice for me to be able to pick up the new version of the framework and develop the tools that can then target the framework. So for example if I want to use async support as a language feature inside of Visual Studio, I have to target to target 4.5 in order to get that feature.
This also helps us harden the framework, test the framework, make sure its going to work well, so again, eat our own dog food.
InfoQ: When do you see Project Roslyn becoming formally integrated into Visual Studio?
Zander: Yeah, I think the pattern to look at is how we introduced LINQ as a language feature, so that if you remember what happened, we provided a CTP for LINQ that you could install with the version of Visual Studio current at that time. It wasn't the compiler built into VS, but another one you could use and target then give us feedback.
So you will have the parallel plan with the official compiler available, and the other one you can use side-by-side for the testing. You want the entire product cycle available to do all the testing, because we can't possible replicate everybody's code so we like to have a full product cycle. So now that it is in CTP and pretty mature, then I would expect us to take that functionality and start moving it more mainstream. So at some point we will have a version of VS where it is default and the one you always use.
InfoQ: So there might be a crossover period where you are picking between one or the other?
Zander: Yes, that's right but those crossover periods are usually much more on previews, CTPs, betas, that kind of stuff. If you install Roslyn it will add new project templates into VS2012, and it will allow you to author a Roslyn C# or Roslyn VB application. It doesn't replace the compilers we ship in VS2012-- so you can actually switch back and forth between the Roslyn compilers and the ones in Visual Studio. At some point we will actually get rid of the notion of an independent Roslyn project, it will be just part of Visual Studio.
InfoQ: Some new tools like git-tf provide some cross platform support between developers and TFS. How important is cross platform compatibility? Do you see it as useful, and is there a lot of support internally?
Zander: Yes, and here is the way I look at it-- what do I really care about? I care about teams being successful, and the reality we have with modern applications is that I'm going to have a lot of devices that are going to be connected. I can target websites directly, and that gives me a good option, but there is always going to be a case where a team is going to want to have that native experience.. that Cocoa app, that Android app, whatever the heck it is, and when I build that I've got a set of tools that I'm using, and so it makes sense to me that when those are the tools that I'm using I still want to be productive, I still want to be working with the rest of my team, so if there is another team down the hallway building up the services components and they add new features, I may want to back and update my Windows Phone app, my WinRT app, my Android app, my Cocoa app, I want to take advantage of that back-end functionality.
We're all still working on the same stuff, right? To me, really, at the end of the day, its really about enabling teams, and teams work with lots of different technologies so we want to make sure that goes well. So you are used to a particular environment-- I'm sure XCode is the best environment for writing Cocoa applications, so this allow us to let you use that environment, but to have the team cooperation stuff.
InfoQ: Thanks for your time.
Zander:Glad we could make it work.
About the Interviewee
As one of the original developers of the Common Language Runtime (CLR), Zander's primary technical areas of contribution include file formats, metadata, compilers, debugging and profiling, and integration of the system into key platforms such as operating systems and databases. Before joining the Visual Studio Team, Zander was the general manager for the .NET Framework Team.
He has worked on numerous products at Microsoft, including the first several releases of the CLR and .NET Framework, Silverlight, SourceSafe, and ODBC. Before joining Microsoft in 1992, Zander worked at IBM Corp. on distributed SQL and SQL/400 at the Rochester lab. Zander holds a Bachelor of Science degree in computer science from Minnesota State University. In his spare time, he enjoys playing with his three children and making furniture in his shop.
InfoQ would like to say thanks to Jason and Microsoft for their cooperation in arranging this interview. Interview transcript was edited for clarity. InfoQ will continue to report on the updates to VS2012 as they arrive.