ANNOUNCER: Ladies and gentlemen, please welcome Soma. (Applause, cheers.)
SOMA SOMASEGAR: Good morning. Good morning. I'm very excited to be here this morning to be able to kick off the launch of Visual Studio 2012 and .NET 4.5. I want to say thank you to all of you who are participating with us for the launch. Some of you are here in person, and a lot of you from around the world virtually in live context. So, thank you for being here with us for this exciting day. (Applause.)
So, over the next 90 minutes or so, we're going to talk to you about Visual Studio 2012, about .NET 4.5. Some of what is coming in new with these products, and also show you the products in action.
But at the same time, I can't do justice to the breadth of the functionality and value that is coming out in this product in any given 90-minute timeframe.
So, one of the things that our team has done is work hard over the last couple weeks to put together over 60 different short video clips that explain to you the different parts of Visual Studio 2012, what is coming in new, and more importantly, how you can get started and leverage that functionality. So, those videos are available today, and hopefully they prove to be a good reference point as you get on the journey with Visual Studio 2012 and .NET 4.5.
If you look back at this calendar year, 2012, and look at what is happening from a Microsoft perspective, I would say we've got a very impressive lineup of product releases coming out. In fact, I would say that this is the best lineup of releases that we've seen in the history of the company, starting with Windows 8, Windows Server 2012, Windows Azure, Windows Phone, Office 365, SQL Server -- I probably have missed one or two things, but every platform that we have at Microsoft, we've got a new version, a new update that's coming out from Microsoft this year.
And so we've got all these fantastic platforms coming out. And for your developers, the center of this platform world is Visual Studio. And with Visual Studio 2012, we are delivering a great set of tools that enable you to build what I call "modern applications" to be able to target the latest and greatest platform technology in addition to any existing platforms that you might have. And the rest of the session here, that's what we're going to focus on and talk about. What is it that you can do with Visual Studio 2012?
Before I dive into the details of Visual Studio 2012, I thought it would be worthwhile for us to take a step back and look at what is happening around us in the world of software development.
If you look at the world of software development, it's changing, it's changing every day, and it's changing very fast. Some of the things that you hear constantly from our customers today is that, hey, there is a digital explosion of devices that is happening. onsumerization of IT is happening. You know, bringing your own device is happening more and more. And, basically, what that relates to is the fact that you and I have one or more devices at any point in time. And for the most part, we want to be able to use the same device whether we're in our home environment or whether we're in a business environment.
The other thing that you hear, particularly from our business customers is gility, agility and more agility. And that's a statement not only on what you do, but also how you do and you how deliver value to your customers.
So, with the advent of cloud computing and continuous services, there are some inherent benefits of agility and economies that you get when you take a bet on the cloud. So, that's one thing that more and more people are thinking about. Hey, what does it mean for me to get on the cloud journey? When do I do it? How do I do it? How does Visual Studio 2012 help me get along the journey?
The other thing that's happening is the amount of data that is getting generated in this world is just growing and growing and growing and growing and growing and growing. In some sense, the amount of data that the world is going to see or generate in the next five years is going to be greater than the amount of data that the world has generated in the history of the world. There is just an explosion of data that's happening. Some people call it big data, you can call it whatever you want, but the notion that there is going to be a huge, huge, huge amount of data that's going to be available to you and how do you make things out of that? How do you get some insight into that? And how do you make the right, smart, intelligent decisions based on the data that is going to help your business advance forward? That is something that every business, every application team, every developer who is building an application is thinking about in their context.
So, all of these strengths, if you sort of think about them coming together, they cause a demand for a new class of applications which I call modern applications.
So, as we think about modern apps, first of all, I would be the first to tell you -- I sort of divide the world of applications into consumer applications and business applications at the broadest level. But as I mentioned before, some of the attributes that applications and application developers are thinking about today span across both business applications and consumer applications. There's user centricity where you really are thinking about how to put the user, and more importantly their identity, at the center of your application so that you can do the right things in terms of making it user specific, making sure that the user has the right set of access to data, irrespective of what environment they are in or what device they have access to.
With the increase of social, every developer is thinking about how do I integrate social graphs into my application and get the benefit of that? Now, I may be thinking about it in a friends and family context when I'm in my consumer environment or I may be thinking about it in the work colleagues or work friends context in the business environment. But no matter what kind of an app you're building, people are thinking about how do I integrate social graphs and get the benefit of social graphs into my application or what I'm trying to do?
Finally, data centricity. When you have access to this large amount of data, what can you to be able to intelligently expose that data to your end user through an application so that they're able to make what I call smart, intelligent decisions that help their business and advance their business?
So, these are some of the attributes that application developers are thinking about as it relates to what they want to do in their application.
An equally important part of it is they're also thinking about how should I do this? One of the things you probably hear a lot nowadays is the notion of build, measure, learn. What teams are saying is, hey, I want to build something. I want to put it out to my customer. I want to measure what is happening. I want to learn from that, and I want to be continuously improving what I'm building. So, the notion of build, measure, learn, and have a iterative move that helps you continuously improve what you're building is something that every development team is thinking about.
So, with this as the context, I want to talk about Visual Studio 2012. Now, over the next -- I guess almost literally the day -- you will be hearing a lot about this new feature, that new feature, and this new capability and that new capability, this new value proposition, that new value proposition kind of thing. But if I had to sort of make it somewhat simple and say there are only two things that I want you to remember when you think Visual Studio 2012. When you use Visual Studio 2012, it's the following two things: One, Visual Studio 2012 delivers the best-in-class development tools for you to be able to build modern applications targeting the latest and greatest platforms in addition to all the platforms that you already have access to. That's the first thing.
The second thing is if you're working in a team environment and if you're thinking about how to make the team highly optimal, highly effective, and have the level of agility that your business demands, that your customers demand, Visual Studio 2012 enables you to adopt what we call the modern lifecycle in terms of build, measure, learn. In terms of continuously improving as you learn, as you deliver to your customers.
So, I'm going to spend some time drilling into both of these things in the next few minutes here.
First, as it relates to building modern applications, now we sometimes refer to this fondly as "connected devices" and "continuous services" but that's generally the app pattern that developers are starting to think about more and more as they build applications.
On the one hand, you've got a variety of devices and device form factors that enable you to build rich experiences that are device specific. Now, if you want to do that between Windows on the phone, Windows on the slate, Windows on the laptop and desktop, we've got a compelling set of platforms on the front end or on the devices side for you to be able to build native, rich, stunning applications using Visual Studio 2012.
Going hand in hand with that, we're also making sure that we have a first-class set of tools for HTML5 development, both in Visual Studio as well as in Expression Blend that is now part of the Visual Studio family.
So, whether they're rich, native applications or whether it's Webstandards-based rich application, we have an opportunity for you to build using Visual Studio 2012 a set of compelling applications that run on a variety of devices.
Now, if you go back to the back end, again, we sort of have a different perspective or a holistic perspective than probably most other guys out there. What we're saying is, hey, we want to give you, the customer, the choice to be able to decide whether you want to run an application in your private cloud environment, in your public cloud environment, or whether in a partner's own environment. And we also want to make sure that once you build an application that runs on a cloud, you have the choice and flexibility to say, hey, I want to be able to seamlessly transition from one environment to the other and back and forth depending on what your business needs are and depending on the kinds of flexibility and agility that you want in your environment.
So, between Windows Server and Windows Azure, we've got a comprehensive set of platform technologies with a set of commonalities, whether it relates to identity, how you manage identity, or whether it relates to virtualization or whether it relates to development environment and a consistent single development tool set in Visual Studio or whether you think about how you expose data in a consistent way to your end user, we have a set of commonalities that span both Windows Server and Windows Azure that make it very, very easy and seamless for you to be able to build your application and be able to move it back and forth between the different environments.
So, far, I talked about building modern applications. Now, if you switch focus and talk about like what does it mean for me to allow this continuous improvement, new modern app life cycle? Here is how I think about it: You have to think about how your team is operating in a highly agile way, and more importantly, how you deliver value to your customers in an agile way. Whether it's continuous feedback or continuous deployment or thinking about quality in a continuous way, these are the things that are going to enable you to continuously deliver value to your customers with the right level of quality in a timely manner.
So, one of the things we've done is through the development of Visual Studio 2012 is work with a number of customers. We call them early adopter customers, or TAP, our Technology Adoption Program customers. But these are people who have taken a bet with us on Visual Studio 2012 long before we shipped the product.
These are people who said, you know, "Hey, we are taking the bet, we like what you're telling us, and we're going to commit to building applications using Visual Studio 2012 that we can deploy in a production environment." Long before you actually ship the product.
So, first of all, I want to say thank you to all our early adopter customers, but along the way we've gotten some great feedback from them, particularly as it relates to the modern app life cycle, there are some quotes from our customers that I thought would be worthwhile sharing with you.
First of all, as it relates to continuous feedback, the key for any feedback to be effective is to see how you can get the stakeholders, the right set of stakeholders involved in the application development life cycle at the right point in time and be able to factor their feedback or give their feedback into the development team.
That's precisely what we've done with Visual Studio 2012 and that has resonated very, very well with our customers as you can see here.
Quality, whenever you think about quality, sometimes people say, I'm going to design something, I'm going to build something, and then I'm going to throw it over the wall to my test organization and they'll tell me whether it's good or bad, and then I'll deal with it.
As we all know, the later you get QA or test involved, the more expensive it is going to be for you to look at the results and do something about it. So, we've always believed in saying quality has been baked into the development process right from day one as opposed to after the fact.
So, with the set of tools that we're delivering in Visual Studio 2012, starting from unit testing all the way to load testing and stress testing and everything in between, we say we've got a comprehensive set of tools that enable you to think about quality on an ongoing basis in a continuous way so that when you're thinking about how do you continuously deliver value to your customers, you can be assured that you'll be able to do that with the right level of quality for your customers.
And then as it relates to continuous delivery, one of the things that is important is for you to be able to deliver on a continuous basis, get feedback on a continuous basis, and then know what is happening to the feedback and how you're reacting to that in your product and then being able to improve how you deliver. That's something we've put a lot of focus and energy and attention between TFS 2012 and Visual Studio 2012 to be able to enable you to deliver continuously to your customers.
So, one way I think about it is, hey, if you can get into a situation where you have a team and the team is thinking about continuous feedback, continuous quality, continuous delivery, and if those things are in place, then magic happens. That's how I feel, really magic happens as it relates to software development.
Some of the things we've heard from our customers, hey, I've seen a 12 percent improvement in time to market. Or I've seen a 30percent reduction in cost as it relates to the amount of spending to be able to build my application. These are all real metrics from real customers who used Visual Studio 2012 this past year, seen the value that Visual Studio 2012 has delivered for them, and this is all directly from the customers.
So, I can keep talking more about, hey, this customer, that customer, this benefit, that benefit kind of thing, and I can do this probably for a whole day at least if not longer. But to make it a little bit interesting, I thought it would be good for you to hear it straight from a customer who has worked with us very closely this past year in terms of adopting Visual Studio 2012, in terms of building applications, deploying applications in their environment. So, let's hear from Columbia. Can we roll the video, please?
(Columbia Video Segment.)
SOMA SOMASEGAR: (Applause.) Let me now invite Brian Summers who heads up application development at Columbia to join me here on stage, Brian? (Applause.)
BRIAN SUMMERS: Soma.
SOMA SOMASEGAR: Thank you for being here. (Applause.)
BRIAN SUMMERS: Pleasure.
SOMA SOMASEGAR: So, Brian, first of all, I want to say a big thank you for all the work that you and your team have done with us this past year. The work that you've done, the bet you've taken, the feedback you've given us has been invaluable as we went through finishing up Visual Studio 2012. So, thank you for that.
BRIAN SUMMERS: You're welcome, it's been a lot of fun.
SOMA SOMASEGAR: And thank you for being here. So, I've got a few things that I want to ask you about your experience in the last year.
So, I've been interacting with your team in some way, shape, or form in the last many months. And one of the things I sort of see in your work is you've got multiple different teams working on a diverse set of technologies. So, it must be a pretty complicated environment as far as managing all of these things, working on different technologies. How has Visual Studio 2012 helped you navigate through the complexity in your organization?
BRIAN SUMMERS: Well, one of our challenges has been finding a common tool that multiple technology teams can use that gives us visibility into what's going on. And I really like the concept of people not being tied to a specific technology and moving them from on technology to another based on project needs. And the Visual Studio TFS suite has allowed us to do that because I can throw a Java guy into a .NET team and there's no ramp-up time for tools. They're able to just jump in, hit the ground running, and it makes them very productive very quickly.
SOMA SOMASEGAR: Great. One of the things you've mentioned in the past is, hey, Visual Studio 2012 and TFS 2012, that's a lot of changes for me and my team. But I also know that it is a change for some of your key business stakeholders. How are they viewing Visual Studio 2012 and TFS 2012, and more importantly their involvement with you and your team as you go through building the applications? Do they think about your team any differently today?
BRIAN SUMMERS: Definitely. They've seen us be more responsive, put out a better-quality product, respond more quickly when they do have requests. For the business to be able to see where we are on a development item at any given moment is huge. You know, they don't have to interrupt a developer. They don't have to wonder if the development teams are this big, black box. They can just go into TFS, pick an item, and get an updated status. It's been fantastic and the response has been very good. They don't completely understand what we do, but they're starting to get there.
SOMA SOMASEGAR: That's great. I'm going to put you on the spot, Brian, now. So, you had a bunch of time working on Visual Studio 2012, you've got some great experience under your belt, you know what is working and how well it's working in your environment. There are a lot of people out there who are in the process of evaluating what Visual Studio 2012 is all about and what they should do and how they should do kind of thing. Do you have any words of wisdom for them?
BRIAN SUMMERS: You know, the biggest thing I would say is if you're curious about if this is right for you, if it seems like an unknown or a big leap would be to reach out to Microsoft. They have been a fantastic partner to Columbia Sportswear and the partner -- the word "partner" is very, very overused in our industry. Everybody thinks they're a partner. In this case, I can truly define partner. It's been very beneficial to us being able to give input, give feedback. I think it's beneficial to you guys based on what we've seen go into the product.
So, take a chance. Pick up the phone, send an email, reach out to your account team. The people that can help you are available, they're willing to help and they'll get very excited about getting you guys involved. So, just jump in with both feet and don't look back.
SOMA SOMASEGAR: Thank you, Brian. Thank you again. (Applause.)
So, we talked a little bit about what some of our customers are saying. We heard a little bit from Columbia here who got some good experience with Visual Studio 2012. I want to now switch focus and talk about one other very important constituent for us, which is our partner ecosystem.
I always believe in having a strong partner ecosystem because between what we do in Visual Studio and what our partners do to be able to build additional tools and additional value and additional functionality on top of Visual Studio, we have an opportunity to provide the broadest and richest tools offering to our customers.
If you go to our Visual Studio gallery today, you'll see that there are over 3400 different tools, extensions, libraries and additional value that you can get on top of Visual Studio that's all built by our extensive partner ecosystem.
Over the last year, a number of these partners have been working very, very closely with us, taking advantage of the latest and greatest features in the Visual Studio 2012 platform, and today I'm excited to say that 72 of them have got over 100 different extensions to Visual Studio 2012 that is all shipping today. So, between Visual Studio 2012 and some great additional functions from our partners, hopefully you have enough to get started to be able to build modern applications.
The other set of people that I want to call out is our customer community. It's been slightly less than four weeks since we've delivered Visual Studio 2012 and .NET 4.5 to our customers. And in this four-week time period, we've seen over 600,000 downloads. I'm going to pause for a second and let that number sink in. Over 600,000 downloads of Visual Studio and this is by far the fastest adoption that we've seen by our developer customers of Visual Studio in the history of Visual Studio. So, again, thank you for being with us, for taking a bet on Visual Studio 2012, and coming along for the journey with us.
It's now time to switch focus and talk a little bit about some exciting new things that I'm getting ready to announce today. First and foremost, like I finished talking about how your customers are asking you to deliver value in an ongoing way, we are no different. Our customers are all saying, "Hey, don't wait for the next three years or five years or seven years, give me things sooner than later. How are you going to give me value on an ongoing basis?"
And a few months ago, we talked about the notion of Visual Studio updates at a regular cadence to be able to deliver new, exciting functionality to you. Today, I'm very excited to announce that the first Visual Studio update for 2012, Visual Studio 2012, is well under way and on track to be delivered to you before the end of this calendar year.
Now, this first update is going to have a bunch of exciting new tools and functionality, whether it is bringing in a set of pplication ifecycle anagement tools for SharePoint development or whether it is enhancing our tools as you build Windows Store apps, or whether it is additional test tools in our journey to enable you to think about quality in a continuous way. There is a whole bunch of new stuff that is coming out in this first update, and we'll be delivering a CTP or a community technology preview of this update later this month so that you can get your hands on the CTP, see what is coming in, and know that we will deliver the first update before the end of the calendar year, and we will continue delivering updates to you on a regular cadence from then on.
The other thing that I want to announce is that the Visual Studio Express for Windows esktop is available for download today. We announced this new SKU to our Express family was going to be added, and the teams worked had. You have access to this, Visual Studio Express for Windows esktop. So, if you want to get access to all the latest and greatest development capabilities in Visual Studio 2012 for any desktop development activity that you have, this is the tool. Go download it today and you can start using it today.
The other thing is if you're interested in functional programming, if you want to use F#, we are delivering a set of F# tools as an add-on to Visual Studio Express for Web so that you can use F# and functional programming in ASP.NET or in any cloud programming that you do for Windows Azure.
Today is all about the launch of a new set of development tools. Hopefully, that is very exciting for you all. We also have a great set of platforms coming out of Microsoft. Makes it even more exciting. I thought, hey, is there something here that I can do that is a little more exciting for you to get you on this journey to build modern applications? And in that context, I'm very excited to say that for every customer and partner who is here with us live in this event today here physically in this event, we'll be giving you a Windows 8 device from an OEM sometime in the next several months, okay? (Laughter, applause.)
Hopefully within the next 24 hours, each and every one of you who are here physically will get a piece from mail from us detailing the logistics of when and how and this kind of thing, but this is just a way for us to say thank you for being here with us to celebrate the launch of Visual Studio 2012 and hopefully this is for you to think about what is possible with Visual Studio 2012 for Windows 8.
I want to wrap up here. There are a set of commitments that I want to end with. Think of about these as commitments from our perspective, on behalf of Visual Studio, on behalf of Microsoft to you all as our customers and partners.
First, Visual Studio is a best-in-class development tool for you to be able to build modern applications targeting the latest and greatest platforms, and we have committed to continue to push the envelope, to stay ahead of the curve, and making sure we're continuing to deliver ongoing value and giving you the best tools for modern applications.
Second, if you're working in a team environment, know that we always think about how the teams can come together in a highly effective, optimal way to be able to adopt the modern life cycle and be highly, highly agile that both your business and your customers demand of you.
Finally, we are committing to delivering value at a very regular cadence to you, as opposed to having to wait multiple years before you see the next functionality from us. (Single cheer.) Thank you. At least one person is excited here, so that's great. (Laughter, applause.)
Visual Studio update one is coming out later this year, and then we'll get on a regular cadence in terms of delivering updates.
So, with that, I know that we've got some great sessions. Jason Zander is going to come up here next, followed by Brian Harry, and they're going to show you the product in action. And then we've got some great sessions planned for you later on through the day.
So, thank you all again for being here with us, for participating in this exciting event, not just for us, but for the whole developer community. Thank you for all your support. Bye. (Applause.)
(Break for video segment.)
ANNOUNCER: Ladies and gentlemen, please welcome Jason Zander. (Applause.)
JASON ZANDER: Good morning. Thank you for being here with us today. We really appreciate it.
So, this is really a very exciting time to be a user. There's a whole bunch of new innovations going on in new devices, sometimes coming out quite literally every single day. We have brand new software everywhere, we've got brand new environments, form factors that people are very interested in.
Now, in this section, what we want to do is talk a little bit about how are we going to build some of these applications?
Now, just starting off looking first what do we see? I mean, just all of us, every day of our lives, we're seeing much, much more technology just show up. In the morning, if I go in and hit the ATM before I go to work, I'm using some kind of a cloud-based system, some kind of a mission-critical application running on the back end. Maybe it's running onpremises, maybe it's running in the cloud, but it's a very nice, sophisticated system out there and it's backing it up. I trust it. I can use it worldwide. You know, it's worldwide compute infrastructure.
As I start getting in through the rest of my work day, I'm going to start collaborating with some of my coworkers. I'm going to see new form factors now starting to show up. Tablets and slates are going to become very popular. I've got touch, I've got nice, fluid displays, it's a very easy thing to work with, and of course it's also backed up with an additional amount of data as well.
As I'm heading home at the end of the day, I'm taking some kind of a mobile device with me probably as well. And this is where I'm kind of switching gears, maybe trying to figure out where are my friends, where are my family, what would I like to do? Social starts to show up and I start figuring out how to plan my evening and how to get synchronized.
So, just in that example, I think we can all recognize this because we're all walking around with some of these devices in our pockets, in our bags, all backed up with the cloud, with all these cool new form factors. That's really a very exciting place for us to be.
Now, that also poses a lot of interesting challenges for us in development. So, what I want to do is concentrate a little bit, how are we actually going to pull that off? Because these demands for these types of applications, everything you just saw, is becoming something that we have to go off and figure out how to deliver.
So, we're going to talk a little bit about modern applications and move a little bit more into the "how" we might do that. I'm going to try and spend a little bit of time on framing, and then we're going to try and spend a lot of our time really inside of the product actually using it so you can see concretely what we've delivered.
First of all, Soma talked a little bit about connected devices, continuous services. And what does that mean to me? Well, if I look at this overall stack, there's all of the elements that are required. I can start off with the bottom of the stack and say, ook, at some point I'm going to have business logic. I'm going to have transaction processing. I'm going to have these systems that I need to keep up.
I've got some of this stuff, again, running onpremises, I might have some of it running up in the cloud. I might actually want to have the flexibility of being able to take advantage of both of those. In some cases, I've got systems that I've been maintaining and building and improving for a very long time.
Now, given I'm going to have that, I can build the software, but that's kind of necessary but not sufficient. Until it gets into a user's hands, I haven't really solved the problem. So, I have to be able to manage the software. I've got to be able to deploy it, operate it, make sure that it's working. So, I want some kind of system to help me out with that.
As I move up to the top, I can look and see you've got tons of devices now. And they're not all coming from the same vendor. And that causes a new challenge because you may be asked to go write applications, and you may not be able to actually write the same project in all places. So, we've got to be able to make investments there that we think are going to make sense here.
So, for example, the HTML5 investments we're making, so I can always be able to present websites and content out to all of my customers no matter what kind of device that they're using, but I may also want to write rich applications. Some of those will be on the Microsoft stack, some of those may be on other platforms.
So, I need a way to do that too. And so being able to easily go off and expose business logic in standards-based ways that can be consumed for multiple form factors, that's going to help me with my architecture. Now I can put the logic in the right place, I can operate it very well, I can get great connectivity and then I'm going to have a decent story.
Now, finally, social is another big element to these modern applications. So, both from the consumer side, touch, nice displays, the kind of fluid motion, social also very interesting. Showed an example up front that had a lot more to do with my friends, but with technologies like Yammer, I'm also doing a lot of that work to collaborate with my coworkers. So, I want to be able to pull those sort of elements also into my software.
And if I look at this entire system, the last thing I'm going to be having to do is, wow, there are a lot of systems here. So, being able to do a really good job with identity, with security, and making sure things are rock solid and they work everywhere, that's going to be super important because we still expect to have that. So, this is a pretty comprehensive set of stuff for us to work on if we really want to write these modern applications.
Now, we've been working really hard on the Microsoft stack to allow you to do this and to try to make it as easy as possible. If I start off at the bottom, we have our on-premises products -- SharePoint Server, Hyper-V. I can run private cloud, I can run onpremises, which you're already set up to do. And of course new versions of Windows Server 2012 makes some of this even easier. We also have our online properties with Azure, SQL Azure, so I can take some of those same workloads.
Now, one of the things I want to make sure that you can do is be able to manage all of that. So, System Center in the new versions we have coming out, they are designed to help me so that I can actually deploy the software, make sure that things are up and running, look at my telemetry and make sure things are going and deal with inevitable failures that are going to happen, hardware, software, whatever it happens to be, we need to be able to handle those.
Now, for us, today, we're talking about Visual Studio and .NET ramework. And here's where we're going back and trying to get a very concrete set of technologies that will help you do everything on the screen. In particular for developers, you know, if you can learn a good programming language, if you can learn the runtime that goes with that, and then Visual Studio for the tools, then you're going to be able to target all sorts of things on here. We want you to be able to take that skill set and apply it. So, if you can write an ASP.NET app, you can write a SharePoint extension. You can actually write a rich Windows application as well. So, you'll be able to apply it everywhere.
Now, again, once we connect this, we're going to have specifics on the devices, and we'll cover that coming up here.
Now, for the services side, let me start off with the back. I think like an architect, so I've got to go build something that I'm going to be able to access and make sure it's going to handle all the scenarios we care about.
Several things we want to make sure there. One, we saw with our ATM example, I may have systems that I've been working on at my company for a long time. This is mission-critical, bedrock stuff. We are going to produce new tools that help you bring those things forward, architecture tools, for example, new technology to build those up and add functionality.
Now, I may also want to start to expose that technology. Maybe, for example, you're being asked to have a mobile application that can connect up to that system that you've been building for 20 years. So, we also are working on things like I can actually put a point of presence in the cloud, I can put it up on Azure and I can securely connect back to my on-premises. So, for example, if I were doing a reservations system which is onpremises, I can actually put a Web service-based front end in the cloud. Now I can actually have something that I can connect with mobile devices. That's a great solution because I can use what I've got, but I can also start bringing it forward as well as starting to build new workloads that are distributed and can take advantage of the scale we can get with the cloud and the new programming models.
I also talked about Web applications, and that's an example where we really want to make sure that, again, you can reach all devices, because they all have a browser in common.
So, some concrete things, and this is just a short list because we have a ton of stuff that's new in .NET 4.5. But in this context, I'm pulling out three. In particular, a new version of ASP.NET with MVC 4, giving me some great controllers, new view functionality to write really compelling Web applications. That's going to make it so that I can actually write apps using standards base, I can project them to any browser that's supporting all the modern standards, I can actually be able to change form factors. I want you to be able to do that and target whichever devices people are asking you to deliver.
After that, we've also produced the Web API and API Controller. So, another example, if I want to export REST and standards-based interfaces to my business logic which then, again, can be used for multiple types of devices, we're going to make that super simple for you so you don’t have to do all the plumbing. The tools actually do that for you.
New version of the entity framework which allows me to get access to my data. Pull it out, cache it, filter it, those sorts of things because so many of our applications on the back end are really doing a lot to crunch data and pull that back through. So, these are just three examples that are in the new version of the framework with new updates that are trying to make this space really very simple for you.
Now, like I mentioned, I want to spend a lot more time actually looking at the product in action, so we're going to do a number of demos. So, I'm going to start off with continuous services. Let me invite Orville up on stage and we'll go take a look at the new functionality. Orville?
ORVILLE McDONALD: Great, thank you, Jason. (Cheers and applause.)
So, today I'm going to show all of you how to develop continuous services for your modern applications using Visual Studio 2012 and a lot of the great technologies and design practices that Jason just finished talking about.
So, all of us are here at this event, and many of us attend events. And I'm actually interested in creating a "my events" app that helps people get the most out of the event that they either attend or organize. So, let's actually go and take a look.
We can see here that I have a list of Visual Studio events that are taking place throughout the world, and I'm going to select the one that all of us are at right now here in Seattle.
And a few things that I'm going to want everybody to notice as we go in is that I have a title, I have a description -- a lot of the common things you would expect in a Web app. But I'm also pulling in maps from Bing, tweets from Twitter, and I can also sign in with Facebook. So, you can see that we're actually combining data in a variety of ways.
And I'm also asking, well, how do I even begin to build something like this? Well, we know that with continuous services it's really about data. Data is the foundation of it all.
So, let's go to Visual Studio. And in here, this is actually a new solution. So, like many of you, we inherit code from other people. And I don't necessarily know where everything is. Well, new in Visual Studio 2012 is the search solution explorer. So, I'm going to go in, I'm going to look for speaker class and there I see it right there. I'm going to open it up. And one of the great things is within my application, I'm taking advantage of the entity framework. So, as a result of that, I can just write plain old CLR classes, or POCO for short, and entity framework handles all the complexity of the different relationships, managing the different objects, and it makes it very easy for me to interact with.
So, now that I have my data, my next question is: Well, then, how do I expose it to different clients that want to interact with it? Especially if I'm trying to build a REST-based service?
Well, I can see here that within my session controller, I actually just go and inherit the API controller right here. And by doing this, I get a lot of great value. It actually handles the creation of all the different crud operations, so that way I don't have to spend my time developing that and I can only focus on the code that only I can write.
So, now that I'm looking at this app, it's looking pretty good. At least the underlying service for it, right? What I really want to know is how can I then go and consume the API? So I'm going to go back. Let's go to our "my events" app and I'm actually going to go and manage the different events. I can see a list of different events throughout the world, once again. I'm going to select the Seattle event. And I can see here that I actually want to manage my schedule.
You see that we have a list of sessions spread out across a variety of rooms, and I'm just going to go select this one from Matt. And I'm actually just going to change the time slot and the room.
You can see that it's really easy just to drag and drop, and you'll notice that I didn't have to save anything. The reason for that is that it's actually just calling the APIs underneath the covers, and it's doing all the updates for me.
You might also notice that I have an AJAX interface. So, I can just drag and drop things. So, I'm kind of curious to see how could I use AJAX and these APIs within my applications?
So, everything is looking good. I'm consuming my API. But there are some more things, too. I know that people use a variety of browsers, so I want to make sure that my markup is really standards compliant. So, as I go and I take a look at my HTML, the first thing everyone should notice is right up top I'm using the HTML5 doc type. And Visual Studio 2012 is actually able to recognize the version of HTML that I'm using, and that gives me better validation of my syntax. Yes, it is a great feature, I love it too. And feel free to applaud at any point because I love this stuff, I get really giddy. (Laughter, applause.)
So, here I'm taking a look at my code. And let's actually go and make a quick change. I want to actually make this HTML4. And now you'll notice that as I've changed that, not only has Visual Studio updated to recognize that's HTML4, but now a lot of the HTML5 nodes that I was using are now getting validation errors, and this is what I'm expecting because I'm actually using a different version of the standard.
So, this is looking great. I know that it's compliant. But there are still other issues I have to deal with. I know that people use browsers when they're surfing the Web. And, thankfully, also with Visual Studio 2012, not only can I use Internet Explorer, but other browsers that are installed on my machine, I can actually use those for debugging as well so that way I can test across all the browsers to make sure it's going to work as I expected. (Applause.)
So, I've seen this, it's starting to get more compliant. I'm doing it all within one tool, but I see a browser that many of you may not be familiar with. And this is actually called Page Inspector. Page Inspector is a new feature we introduced in this edition. And the great thing with it is that often when you're debugging applications, you're sitting in a browser and you have the DOM and you can see everything that's happening on the client side. But the key thing that's really missing is that when I see an error on my page, I'm really interested in what's the exact line of code on the server that was used for rendering that UI? Well, now I can actually do that with Page Inspector.
So, for those of you who are really familiar with the F12 developer tools, you might be looking at this and it looks like we actually brought those into Visual Studio, which would be awesome. But we've actually taken it one step further. You'll see here that I have this "inspect" button. And as I scroll over my UI, you'll notice two things: One, you'll see the element that I'm scrolling over getting highlighted, but you're also seeing a dynamic update of the code that goes to the exact line of code on the server that's being used to render what I'm seeing in my UI. (Applause.)
So, as I scroll over, I see that it says, "Hi, Jason" but my name is actually Orville, so I know that there's a bug here.
So, let's actually go and take a look at the code. And I can see for testing purposes, somebody had just gone in and hard coded that. So, I'm going to go and change that. So, let's delete that. And they actually commented out the real code. So, let's go and bring that back in.
And I'm just going to go and save that file now. You may note that as I saved it, Page Inspector gave me this notice to go and refresh the page due to that tight relationship between the page inspector and the code. And you can see that I'm doing this all within VS, the bug has been fixed, and I was able to be that much more productive by using Visual Studio 2012.
So, I have this up and running, it's looking great, but I also have one more question. I know that a lot of people not only use desktop browsers, but they also use mobile browsers as well. And I'm really curious what this is going to look like.
I don’t have a phone simulator on this machine, so I'm actually just going to test this out using Internet Explorer. So, as it loads up, you'll notice that the resolution isn't quite consistent with what a mobile browser would look like. So, let's go and change this and see what it might look like. Okay, so it's reformatting pretty well, I'm liking this, this is good. Right here, that's not quite looking too good, something is off. So, I'd actually like to go and figure out what's going on.
So, I'm going to go back and I'm going to take a look at my solution. And the great thing is because I'm using ASP.NET MVC 4, I actually get to use different views. So, you'll notice here that I actually have two layouts. One of them is my standard layout, but I also have the option of having a mobile layout. And within my mobile layout, I can do certain things like detect the width of the device that I'm on and reformat accordingly.
So, if I go back to my app, I need to now simulate like if I'm coming in on a mobile browser. But as I mentioned, I don't have a simulator here, but thankfully I can actually take advantage of the F12 developer tools in IE, and I'll just go and change my user agent string. You'll see I have a variety of options, and I'm actually just going to select IE for Windows Phone.
So, let's go and resize this more like what I think. Okay, that's closer to what I would expect. Refresh the page. And now you see I actually have a new view, all from my application, and this looks a lot better for mobile browsers.
So, I'm liking this. This is looking great. We've developed a Web app, everything is looking hot, it's going to work across a variety of places. But so far all I've been doing is taking advantage of my on-premises infrastructure. And what I'd like to do is actually take advantage of the elasticity that Azure provides.
You might be thinking that I might need to go or rearchitect my page or do a whole bunch of things, but, actually, I could just go and publish directly from Visual Studio. Previously, I went to the Azure portal and I actually already downloaded my import settings. So, I'll just go and do that -- or my publishing settings. Go through, I'm actually going to select my data that sits in the cloud that looks great.
I'm going to go and publish that. You'll see that I'll get the build information and I'll also get deployment status to see kind of how it's going. But in the interest of time, I already pre-deployed. And you can see that I have my app running on an Azure website.
So, we've actually just seen a few great things. We've seen that with Visual Studio 2012 it really simplifies the development of continuous services. You can take advantage of not only your on-premises infrastructure, but also take advantage of the cloud as well. And we also support open standards so that as you develop your continuous service, you can consume it from a variety of clients. Thank you. (Applause.)
JASON ZANDER: Awesome, thank you, Orville. All right, so a lot of really great functionality. Like I said, you'll be able to apply your skill set across each one of these, making it real easy to get that business logic out there.
I want to switch again and let's move up more towards the top and start talking about these devices that we have. Now, with Web, we just talked about the ability to hit standards-based browser, being able to hit whichever form factor you want. So, you also wanted to land on Android and OS in addition to Internet Explorer, Chrome, et cetera, then you're going to be covered with that. You can hit all of those.
Now, if you look at the clients, we're also doing a significant amount of work on the Microsoft platform. So, we've got some really exciting stuff coming out.
Now, let's look at a few of these. First of all, for Windows desktop, with .NET Framework 4.5, Visual Studio 2012, we have added additional improvements both in the framework as well as the tooling to help you with your existing desktop applications that you're creating. That includes Windows forms, that includes WPF, so if you're doing XAML and those sort of things, for example, we've got Blend and those sorts of things to help you out with that.
So, we're going to really make that still a first-class experience for you, allow you to keep adding new things, and just like we showed some cool functionality, you're going to be able to go in and you can go actually access those same APIs that we just showed authoring from those environments.
Now, also the new, big things we've got coming out, Windows 8, the store applications that you can go out and create. Now, there, we really want to make sure that you're able to use all your programming skills no matter what they are. So, we've got XAML support if you're used to being able to do that. Say you're already experienced with WPF as an example, I can use C# and Visual Basic, as well as C++ to author those applications.
Now, with that, I'm going to be able to put things up. And whether you're doing the next really cool application that's going to go off to millions of people, next really cool game, take your pick, or I'm going to be able to write something that I'm deploying in my enterprise, kind of doing group policy, but I really want it to work on these new form factors, you'll be able to handle all of those with the tool.
Now, we have support also for Windows Phone. We've already got those SDK and those sorts of things that are out. You can build those applications today. And with the new versions of Windows Phone that you've seen us start to talk about that are coming out soon, we'll have tools for that as well and that will work very similar to the way that you do today. You'll be able to install those in Visual Studio, and I'll be able to write applications both for the 7X and the new version that's coming out after that. Once again, being able to do a XAML, in this case now with C++, I've got full flexibility.
Now, finally, we are making big investments with Internet Explorer. So we have IE9 that we've released, and we've got the new version coming out, Internet Explorer 10, which will also be shipping with Windows 8. And you saw an example with the F12 tools, but in addition to that, we want the tools to be really super simple when it comes to editing my code, being able to understand the markup that I'm doing and those sorts of things. Everything is going to be nice and fully integrated.
So, once again, I wanted to make sure we spend most of our time in the code, so I'm going to hand it over to Orville again. Let's take a look at some connected devices.
ORVILLE McDONALD: Thank you, Jason. So, the next part we're going to do now is we're actually going to show how we have tailored, connected devices experiences powered by the continuous services we just finished developing, all with Visual Studio 2012.
So, we're actually going to go and continue on with our events app. And right now I'm actually interested in developing something for the organizers, right? They spend a lot of time doing a lot of data entry on their desktops, so we've actually created a WPF application for them.
You can see here within Visual Studio 2012 you actually see the WPF designer. Well, the great thing about it is it's actually Blend behind the scenes, so it has gotten that much more powerful, and once again your XAML skills carry forward. As I pull up my application, we can see here that organizers, they have a lot of things on their mind, right? So, one thing is they're tracking a variety of events throughout the world.
So, we'll click on the first one. We could see here that I could drill into the events schedule, I could see the different sessions that are taking place in a variety of rooms. I'll select the first one. This is for the keynote on modern development. I could actually go in and I could edit it and change this information; so once again, really optimized for the desktop experience, a lot of data entry.
So, there are other things that I'm interested in as well. If I go back to my dashboard, I'm also curious about how my event's doing, what are people saying? So I have a list of speakers, and I also have a list of tags so I can see kind of what all the chatter is about. And I'll just go and refresh that. And you'll notice that as I try to move my application, it wasn't really responding, it's hanging. It looks like for some reason, there's some operation that's just taking way too long, and I don't like the poor performance that I'm getting with it.
So, I'm going to go in and actually take a look at my code. I could see within my code that I have this reload top tags, and in it I'm actually making a synchronous call to pull the top tags.
So, now I'm going to go and actually make this asynchronous. Normally, this would be a very tricky operation. Sometimes I might even need to rearchitect my code. Thankfully, with the new feature that we have in the .NET Framework 4.5, we've actually streamlined the ability to write asynchronous code.
So, I'm going to go here and I'm just going to actually pull up the other method that I'm interested in, asynch 08. You'll notice that I called the exact same way I called my synchronous code. And the other thing I like to highlight as well is that my method, I've added two new key words "asynch" and "08" and what that's enabled me to do is actually write asynchronous code almost as if it was synchronous code.
So, we can see our WPF application's reloaded here. I'll bring it up. I have my list of top tags, I can go and refresh it, and I can actually move my app around and now it's actually more responsive. (Applause.)
So, you can see how in Visual Studio 2012 we've really simplified the development of asynchronous operations.
So, that's actually pretty cool. But the thing I'm actually interested in now is that organizers are on the move, right? They're not always just sitting at a desk. And with that, they actually carry tablets. And because they're carrying a tablet, their experience is different. They need an app that's more touch sensitive, something that's information at your fingertips. So, let's see what we have over here.
We're going to go and actually take a look at our "my events" app. So, now I'm going to click on my organizers. You can see I can click on different events. And then I also have my session information. And as I look at my session, I can see a list of attendees, I see comments. So, this is all looking pretty good.
But the thing I'm really curious about is kind of, well, what's going on in Visual Studio, how was I able to go and create something like this?
So, you can see here that once again this is a XAML .NET app. So, if you're used to writing XAML code already, your skills transfer.
But the thing you might also be wondering is that, okay, it's great I can reuse my skills, but it's annoying that as I go from one device to another device I'm writing the same code over and over and over again.
Well, we actually have a solution for you. In Visual Studio 2012 we actually support portable libraries, which is a new thing here in the .NET framework. And what this enables me to do is actually write all my programs once and encapsulate it in a portable library. And then the only thing I need to do is actually transfer that portable library from device to device, and you see we support a wide variety of then, even including the Xbox 360. So, once again really streamlining your development experience, and making you focus only on what's important.
So, this is looking great. The organizers are happy. But, you know, all of you attendees, you want something hot, too, right? You want something that you can play with, and you can see what's going on with the event. So, we actually have something for the attendees as well.
As I go back to my tablet, we know that they also want something that's touch as the interaction, and that also is a bit more immersive. So, you can see here with my attendee app, I have a variety of places I could go to. And I'm actually interested in this Madrid event. I can see here that not only do I have my town description, but I'm able to pull in my map. I could see the schedule that I have here.
I'm just going to go in and take a look at the keynotes. And with this, because it's more of a social application, I can see a variety of comments from my friends. And I can actually see my friends that are here that are coming in over Facebook.
Another cool thing is that after when you see a session, especially cool one, you really want to share with your friends kind of what you talked about, what you learned. Well, this app also includes the ability to view notes. And you can see here that I have this virtual paper, and I can just scroll through and I can see different notes that friends are sharing with me. And we're actually going to talk about that paper in a moment.
So, if I go back to Visual Studio, because this app is for attendees, they want to make sure that everything is pixel perfect. This has to be the essence of perfection. Well, thankfully, I can take advantage of Blend for Visual Studio, as I bring that out. And for those of you who are used to using it for XAML, if you're developing Windows Store apps, you could also use the HTML5 capability to write Windows Store apps.
I could see there that I have a view of my tablet. The one thing I know is that most of the design issues don't happen with the fake data, it happens with the real data, when you interact with it in the real world. So, I'd actually like to simulate that. Within Blend, I can take advantage of interactive mode. I can go in and I can select the different events I want. And I can see that the schedule isn't quite aligned with the name, and I actually want to change that. So, I can actually just click out of interactive mode, go within the designer, select the different elements. And just go and just move things kind of as I please until I get it pixel perfect the way I want it. So, once again, really streamlining how we create these apps to make them really delightful for end users.
So, now I have that, but I'm really curious about this virtual paper that I just saw. So, let's go back to our tablet, and let's see what we have here. I'm going to pull up my tablet app, or my paper app. And you can see here I can just grab it, and I can manipulate the paper. That's actually pretty great. But there are other things I can do with it, too. Let's imagine that this was real paper, I want to simulate that. So, I can actually just go through and rotate it like that. I could go out. I have a stylus if I want to take notes, if I want to go and just write a few things. So, VS 2012. You can tell I spend a lot of time typing because my penmanship is not exactly the greatest.
It's also touch sensitive, so I can draw light lines. I can draw full lines there. And I can actually share these notes with friends. Essentially, due to my app, it has a contract with Windows 8, so I can actually take advantage of things like a Share Charm. I can just pull up my app for attendees. I'll see a list of the different events and sessions, so I'll just go there and click share. Now the rest of my friends can see my great chicken scratch writing.
But there are other things that I want to do with paper, too. Sometimes I get frustrated, and I really just want to crumple the paper. So, I can go and I can just make my paper dance like that as well. And I can just go through and say, oh, let's cross off those notes, I don't really like that.
So, you can see here that I'm doing some pretty awesome stuff. But I know oftentimes the way I design my code and the way I want the graphics to appear doesn't always turn out the way I want it to. And I sometimes want to debug that and figure out what's going on.
So, if I go back to my Visual Studio, let's just pull up our journal app. I can actually go and just debug it right here. So, I'm going to start some diagnostics. And because I'm using Windows 8, I actually get to take advantage of the simulator, especially for those of you who don't have a tablet already. I could go and actually simulate using my finger. So, I could go through and just go and manipulate the paper. And that looks about right. Let's go and debug that.
So, I'm going to press the print screen button, great. And as I go back to Visual Studio, I'm actually going to get this view, and I could say, let me look at that pixel. With that pixel I end up getting a pixel history. And I could actually go through, and I could actually take a look at the pipeline stages. So, I could see all the transformations that happen to my image that went into this renderer.
I'll go and take a look at my vertex shader. Okay, that's looking all right. But what I really care about is, what is the exact line of code that went into rendering this pixel, because we know that there's a whole class of errors that can happen that can be anywhere from my app to the information that's submitted into our DirectX, or even the GPU. So, I'll go through and now I can actually see the exact line of code that was used for rendering those pixels. So, we've seen this pretty cool advanced graphic debugging.
And the reason why this was so important is that this enables me to do even greater things by taking advantage of some of the hardware. In this case, maybe even taking advantage of Kinect for Windows and a webcam. So, for this one I'm going to need a little bit of help, so I'm just going to ask if Jason could come out.
JASON ZANDER: All right.
ORVILLE MCDONALD: All right. Well, thank you Jason. So, you can see there, you see him over on the webcam. So, for those of you who are unable to attend this event, we actually created a little mini virtual event server, which is our modern app using all the best practices we described today. So, you can see Jason over there, and I'm actually going to just go and connect to it on my tablet. We can see here that we have the event information. So, we'll select that one. And I can see a little information on Jason.
JASON ZANDER: Let's do the wave.
ORVILLE MCDONALD: So, we see Jason over there on the Kinect. You'll also notice that behind him you can see the audience over taking advantage of the webcam. So, because we want to make this a sharing application, we're going to test out a few things.
So, we actually have this feature called Assess. So, Jason being an engineering manager knows that I need to test all the edge cases. We can't leave anything to chance. So, we're going to test something that really wouldn't happen. What would happen if people actually disapproved of these demos?
But in reality we know that a lot of people have loved Visual Studio 2012. We've gotten a lot of great feedback. So, this is probably the more accurate assessment.
JASON ZANDER: That's more like it. All right.
ORVILLE MCDONALD: So, we've seen a lot of great things today. We've seen that you could actually bring your existing skills towards building modern applications. That Visual Studio is the one solution you need to create your continuous services, and tie them to your connected devices. And you'll also note that for these demos that you saw today, you can actually go out and get the code if you go onto MSDN, look for samples, and you get all of it there.
(Cheers and applause.)
JASON ZANDER: Thanks, Orville, that was awesome.
So, I think at this point you've seen us basically start at the bottom and make it all the way back up to the top, and a bunch of different form factors and cool code that you can do with the new tools that we've got coming out, and these cool new form factors, as well.
Now, a couple of things that I'll leave you with, as we go off to work on connected devices and continuous services. One, we're going to work very hard on helping you do unified application services. You saw on the back end being able to build services, expose them, consume them in multiple types of ways, on heterogeneous platforms, basically make sure you can get that out there everywhere.
After that we really want the best tools for modern platforms. I think some of us probably spend more time looking at Visual Studio than most other things in our lives. So, we want to really make sure that's a great environment for you. It's a productive environment. It's easy for you to work on your code, really get to the task and get all of that content done.
So, we're really excited about the new launch. We're really excited about the new platforms that are coming out. I hope you enjoy the tools. I can't wait to see what you're going to build with them.
Thank you. (Applause.)
BRIAN HARRY: Thank you very much. I appreciate it.
Well, no sound. Are you there yet? No sound. Hello. Hello. Any sound? All right. Well, that's not going to work well for the online, but maybe I can at least we're going to switch. Great. No presentation works without a technical difficulty. Hopefully that suffices for the crashing demo.
All right. So, thank you. So, we started the morning with Soma talking a little about some important changes in sort of the industry. First, the trend of consumerization of IT, let me spit that out, and sort of the changing expectations that people have about the kind of applications that are available when they want them, where they want them. Having consumer-type experiences no matter where they go and no matter what data they're accessing.
Further, you talked about the increasing needs of business agility. But, the rate of change of business and technology just keeps speeding up, like every year it's faster and we as developers need to figure out how to keep up. So, Jason then showed you sort of what we think modern apps look like and what the modern app development looks like. So, along with your modern apps you also need to figure out how to deliver those apps agilely, quickly and responsively to your customers' needs.
So, along with your modern app, you need a modern app lifecycle that's going to enable you to do that. So, there are a few activities that we've sort of identified are key to the modern app lifecycle. First, is feedback, you need to be able to be constantly plugged into your customer. Getting feedback about what they're using, what they like, and that's helped you make sure you're building the right things.
You also need to think about continuous quality. You can no longer afford to build up debt, right. You can't debt is a chain around your ability to be agile. You need to keep your quality high the entire time so that as requirements change, or the customer needs change you're able to adapt quickly and not have to deal with a ball and chain of debt you're dragging behind you.
And thirdly, of course once you build the app you've got to get it in your customers' hands. And you can't get feedback from anybody until they've got it. So, sort of streamlining, smoothing out that ability to get your app into your customers' hands and start that feedback cycle is incredibly important.
So, a modern app is an app that's continuously improving. Every day, every week, every month it's getting better. So, to do that you've got to look at the various activities, you need to rethink all the activities that you do, whether it's the definitions, sort of deciding what it is you're going to build, whether it's a new idea that you have or it's some feedback that you've gotten, you need to rethink how you're doing that. You need to rethink how you're developing to streamline that process, to get out smaller chunks of value more quickly and get feedback on it. And then you need to think about how you deliver and operate that, because if you're not doing that quickly and agilely, you're not able to keep that loop going.
As I think about we've been delivering Team Foundation Service now for the last year or so, and we're now on a three-week cadence to deliver, every three weeks we deliver new value. I sort of reflect back a year ago that's something that would have been impossible for us. But, we've gone sort of through this transition of rethinking how we do everything, every phase, and it now enables us to deliver value incredibly reactive, or responsively, incredibly quickly.
So, the lifecycle, of course, involves a lot of activities. But, the modern lifecycle, or I should say sort of the old lifecycle was defined by kind of a waterfall process of I spent a bunch of time defining my product and then I'd go build it and then I'd do a bunch of testing and then I'd develop it, or sorry, then I deploy it and operate it.
But, the modern lifecycle is really about breaking that down into a series of iterations and then figuring out how to get through those iterations as fast as possible. So, instead of months or years your whole cycle from idea to implementation, to deployment, to feedback is a day, a week, a few weeks, it depends a little bit on your business, but it's fundamentally defined by getting through that cycle quickly.
So, as we set out to build Visual Studio 2012, we were sort of looking at these trends in the industry and what it meant for developers, we started looking at if we're going to help developers get through this cycle really fast, let's really look at what are the impediments. What's the friction points in that cycle that slow people down? So, the first place we started looking is in product definition. So, you've got an idea and you need to refine that idea. How do we help you with that? Well, kind of the number one problem is we'll call it misunderstood requirements, which is hey, if you don't know what people want you're heading in the wrong direction and you ain't ever going to get there. So, that first part is to make sure we understand what our customers want.
And the second is conflicting priorities. Every customer's eyes are bigger than their development team's stomachs. That's by definition. So, if you just get the list of requirements it's going to be a book. It's going to be a compendium of ideas that somebody has. So, the most important thing is figuring out how to prioritize those things and make sure that you get the most important things first. So, I'm going to invite Nicole to come up on stage and she's going to walk us through some of the great stuff we've done in Visual Studio 2012 to help with this.
NICOLE HERKOWITZ: Thank you, Brian.
(Cheers and applause.)
So, in the previous session, can you hear me now? Great. Okay, in the previous session, we saw Orville show some really cool My Events applications. But Brian Harry, our business stakeholder, has feedback on how we can improve the eb application. Wouldn't it be great if we could mock up those changes before we go into development to ensure what we build aligns with the business stakeholder's needs?
Well, with Visual Studio 2012, we can now do that with the PowerPoint storyboarding tool. PowerPoint storyboarding is an add-in for PowerPoint, and it's a great tool to quickly just create mock-ups. And what's great is that PowerPoint just has capabilities like animations, and layouts, and controls right here.
So, now you can see a mock-up of that My Events eb app that Brian would like us to make some changes to. He specifically would like us to add dates for all the upcoming events. So, I'm going to go ahead and I'm going to go in and start making some changes to that mock-up. I'm going to go into the rich shapes library, where we have shapes for eb, Windows Phone and SharePoint applications. I can quickly find some shapes that work for my layout, and I can drag and drop them.
You can also go into VS Gallery, and there's a lot of communitycreated shapes that you can take advantage of. I just heard today that the iOS shapes will be available. So, these will continue to become available over time. So, I'm going to continue to edit that, and I'll now have my final mock-up of that eb page.
I would then like to share it with Brian to get his feedback to ensure it aligns with his requirements. What's great about these storyboards is that they're all just in PowerPoint, so anyone who has PowerPoint can easily review them, can edit them. Even if they're not very technical, like Brian. (Laughter.) So, we know Brian is quite technical, but he's seen these storyboards numerous times, so I'm sure he's going to agree with the approach.
So, now let's move forward with planning the development with our agile planning tools. So, now I'm in the eb access view of Team Foundation Server 2012. This is a great at-a-glance view of all the information that my project team wants to stay on top of. Each of these tiles can be easily customized based on queries that my team cares about, such as backlog items, bugs, information about our latest build.
But, I'm going to go into the backlog section so that I can add that change request that Brian wants me to focus on. Here you're seeing a prioritized view of all of our upcoming work. It's very easy for me to come in here and add an additional item. As you can see, it just falls to the top of that priority list. I can come in and I can drag and drop it to lower on the list if it's not high priority. But clearly we know Brian wants this work done urgently, so I'll keep it at the top.
I can also go in there and I can add additional information about that backlog item. I can even link to that storyboard that we just created that Brian signed off on to ensure that the developer who is working on these changes will know exactly what Brian needed for this change request. I also like to use this view for sprint planning. Now I can see what work will get completed for each sprint based on the velocity that my team is working on.
Now, Brian has been very clear, we must get this change request in as soon as possible. So, I'm going to just take this item into our current sprint, even though this is not a recommended practice. And I can start to go ahead and do some additional planning. So, now I can see a list of all the backlog items in my current sprint. I now have the ability to break it down into individual tasks. So, I'm going to break down my change request into a task. Now, I'm going to provide some more detail.
For example, I'm going to have Brian Keller, a developer on my team, do about four hours of work on this project. As you notice, we have a lot of Brians on our launch today. And now you're looking, Brian Keller is over-committed for this sprint. I need to take action to reduce his workload. So, I'm going to find a lower priority work item, and move it to a future sprint. So, I'm just going to drag and drop it. And now you're going to see that Brian is no longer over-committed, and the team is happy.
So, what I've been able to highlight is how we can adjust our plans as priorities change. Now I've got a plan in place, including that change request from Brian, and I need to move forward with tracking our progress against that plan. So, now I'm going to go into the task board. The task board is kind of a modern day implementation of Post-It notes on a whiteboard. I can easily come in here and drag and drop as I move forward with my progress of my task. This I can do with a mouse click or I can do it all touch enabled if I have the appropriate screens.
I heard that Brian is now out of Office 6, so I'm going to have to take over those tasks so we get this work done quickly. And I can also have different views. For example, I may want to look at each of these tasks by individual on the team. This is a great view for me to bring into my daily stand-ups so each team member can walk through their tasks and provide updates on their work.
If you look at the upper right-hand corner, you can see the burn down chart. As work gets completed, that burn down chart gets updated real-time. This is another view that I like to share with Brian so he can always see how the team is progressing relative to our upcoming milestones.
So, in this session, I've been able to show you how we've been able to get Brian's feedback early and often in the development process by taking advantage of tools like storyboarding to ensure what we build aligns with Brian's requirements. In addition, I've used the agile planning tools to make sure that the work we're prioritizing aligns with Brian's requirements, in addition to giving him status of our work.
BRIAN HARRY: Thanks, Nicole. I appreciate it.
Don't go anywhere, we've got plenty more to show. So, I've got to say, that's awesome. I feel super connected. I know what you're going to build. I know kind of how you're thinking about it, how you've broken the work down, when you expect to deliver it. That's awesome. I feel like I'm part of the process.
So, okay, great. We know what we're going to build. We feel like we're on the same page. And now we've got to go build it. So, what are the impediments there? What is the friction? We've got to make the development go just as much faster as anything else.
So, again, as we sort of approached Visual Studio 2012, we asked what are the impediments? What can we do to make the development phase go even faster?
So, first we identified was loss of focus. So, how many of you have ever been deep buried inside something debugging problem, and your mind is totally into it, and somebody walks into your office and says, ey, I've got this really important bug that's got to get fixed right now or ey, could you do a design review for me on this stuff, I need some helpAnd you just know you've lost it. Like, that's it, it's going to take you a halfanhour to get back into that when you finally get back to it.
What if we could make that a lot easier? What is we could make those we can't make interruptions go away, but what if we could make them a whole lot easier to deal with, and get back into that zone and get back into your work?
So, the second, as I mentioned, to maintain that agility, to achieve the kind of agility you need, you've got to keep quality an important part of the process along the way. Quality cannot be an afterthought. So, you need to make quality the developer's problem, and you need to integrate it into their daily workflow.
And, third is unmet user expectation. So, hey, Nicole and I have a pretty good understanding now of what we think we're going to build. But once I've seen it, I might have changed my mind. I'm like, oh, well, I thought that was going to be what I want, but it turns out it's not. Now that I've seen it, I don't like it. Well, if I don't get to see it for three months, or six months, what's that going to mean? That's going to mean you've wasted a lot of your development time, because now you've got to go back to something you did two months ago and redo it, because your stakeholders decided they don't like it.
So, what if we could address these problems and make your life that much more productive?
I'll turn it back over to Nicole, and she's going to walk us through some of the improvements that we've made.
NICOLE HERKOWITZ: Thanks, Brian.
So, here I am, I'm in Visual Studio. I'm coding. I'm in the zone. And I get an interruption from Brian. He has a highpriority change request for that My Events eb app that he wants me to focus on right away.
Well, in the past that type of interruption would have been a big productivity hit for me, because I would have to switch context. But with Visual Studio 2012, I now have the opportunity to take advantage of the suspend and shelf capabilities. And what this will do is it will take all these code changes I've made, all the various files that I have opened, all the break points, if I have multiple monitors with Windows all over the place, it will package them up and put them on Team Foundation Server.
When I'm done doing this change request for Brian, I can then just have Visual Studio resume it all to that environment I was in before the change was made. Isn't that cool? (Applause.) Great.
So, now I can focus on that change request for Brian. So, I'm just going to add it into my inprogress work. This will ensure that any changes that I make will get associated back with this work item. I'm going to go and get the file where I need to make those feature changes, and I'm going to scroll through to find where is the appropriate place within my code to make the changes. I'll keep on looking. I have to admit, I never can complain when making a feature change is as easy as uncommenting some code. So, I'm going to go ahead now and build my project. I've got that feature change.
And when the build is finished, what you'll see is I've set up for automatic unit testing, so that we will ensure that the code is high quality when it's complete. This is another big investment area of Visual Studio 2012, where we've integrated quality throughout the process to ensure that it's not just the testers who are focused on quality. So, you'll see now that those unit tests are running. With Visual Studio 2012 we now support thirdparty unit testing frameworks. So, if you like X unit, or N unit, you can use all of those right within the familiar environment of Visual Studio.
So, these unit tests will continue to run in the background, but as I do I'm now going to move forward to another feature that helps you ensure the quality of your code called code review. This allows me to reach out to other developers on my team to provide feedback on my code. I can select a reviewer, or several reviewers, provide some specific questions of area on the code to look at, but the best thing about this is code review is all stored in Team Foundation Server, so there's complete trace-ability. If anyone wants to know if there's a senior developer who has signed off on the code before I checked it in, we all now know, because it's visible in Team Foundation Server.
So, now I'm going to move forward and just check in my code, and I've set up continuous integration, so a new version of that site will be published on a staging server. And now I can go to the last stage in the process, which I want to reach back out to Brian to show him the feature changes that I've made to ensure that they align with his requirements. So, I'm coming back into eb access. I'm going to request feedback. I can choose Brian or a variety of other stakeholders to give feedback. I'm going to point him to where I have that site available for him to provide feedback. I can also put a set of questions or areas for him to focus his feedback.
So, I may want to say does the event dates column so, that's going to kick off a mail that I'm going to send directly to Brian, and then Brian will be able to start a feedback session.
BRIAN HARRY: Great. Thank you, Nicole. All right. So, I see I've gotten mail from Nicole, and she wants me to take a look at this. That's pretty awesome. I'm going to get some feedback. So, I can just quickly click this start my feedback session link and I see here the apps she wants me to give feedback on. It's a nice link. So, let me launch the app and any instructions that she's given me, all right, great. Hey, look, I see the app, I've got my nice dates column, but you know now that I'm looking at it I'm thinking did I mention to her that we were going to use this app globally and I see those are US date formats, but I might have forgotten to mention that we need to have those dates work in the various regions.
So, let me just grab a quick screen shot here. And I want to annotate that screen shot. So, I just pull it up real quick in Paint; highlight the date, save that. The screenshot you notice is automatically updated. And I just say did we I'll see if I can type. And did we think about international dates? But, other than that it's looking good. It's exactly what I want. So, I'm going to give her a four stars on that and save that, give it back to her, and let her take it back.
NICOLE HERKOWITZ: Thanks, Brian. So, now I'm going to come back into eb access. I'm going to refresh my page. You can see that I now have a new feedback response. I can go in here and I can see that specific response from Brian. I can see that screen capture along with information, or as feedback related to international dates. Now I'll likely assign this to the appropriate developer to make those changes. And what's great is that developer will have access directly to Brian's feedback. So, any changes he makes will ensure that it takes into account what Brian has suggested.
So, what we've been able to show you in this demo is how we've been able to ensure quality throughout the development cycle, taking advantage of capabilities like unit testing and code review. Quality is not just the job of testers. In addition we've continued to gather feedback from our stakeholder to ensure now what we've built actually aligns with the requirements.
BRIAN HARRY: Thank you, Nicole.
Again, I feel super connected. (Applause.) Thank you.
So, I saw what you were going to build. I saw how you were going to build it. I saw you build it. I'm superhappy. Now it's time to get that into our customers' hands. So, again, this cycle is not complete until we actually get this out there and begin getting feedback from the people who are actually using it day to day.
So, what are the friction points in that? Well, first is deployment itself. How many of you have dealt with IT deployment policies that take weeks or months to get apps deployed into production. We've got to do away with that. We've got to make deployment just almost a part of development. It's got to be a natural part. Hey, I check in, I do a build and boom I get that thing deployed out effortlessly within hours.
Next is, hey, issues happen in production. There will be bugs. There will be problems, but what's sort of the defining characteristic of production. They're dang hard to track down. First of all, they're usually your hardest bugs. They're the hardest to reproduce, and no ops person is going to let you into the production environment to start poking around. So, that makes them the most difficult to diagnose and yet they're also the most important. You need to fix them quick. So, what if we could make that a lot easier.
So, again, I'm going to turn it over to Nicole while she's drinking water and have her show us some great stuff that we've done in Visual Studio 2012 to address those issues.
NICOLE HERKOWITZ: Thanks, Brian.
So, as Brian said, the next step is really around reducing those impediments between development and operations. Like the business stakeholders we want to involve them early and often in the development cycle so that we ensure that we don't have problems when we push, or deploy into production. With Team Foundation Server you can take advantage of the continuous integration, continuous deployment capabilities, so that you can deploy to a variety of different environments.
And so here are my build definitions, you can see how I've set up different environments. Staging environments, testing environments, even production environments. And my development team, we can work really closely with our operations team to ensure that we define a set of repeatable processes for these continuous deployment scenarios.
So, now I've highlighted one way that we connect better with our operations team, but we also need to make sure that our operations team is providing feedback back to the development team. As Brian already highlighted, it's really critical when issues happen in production. It's very hard for development teams to be able to reproduce those issues in a development environment, and therefore it's almost impossible to troubleshoot.
With Visual Studio 2012 we now support IntelliTrace in production, which lets us focus on these types of problems. So, let me show you an example of how we do that. SO, here's our My Events eb page. It's now in production. Customers are hitting the site. And now we're starting to get feedback that they're hitting errors. Now, this is really bad, and I have a feeling operations is not going to let me install Visual Studio in the production environment and start debugging. But, now with Visual Studio 2012 I can provide the operations team with IntelliTrace collectors so they can now run some very basic Power Shell commands to collect some rich data and then get it back to the development team to then start debugging.
In the fall with the System Center 2012 Service Pack One release, we'll be able to automate this entire process right through within the operations manager console. So, let me show you, I get this file back from the operations team. It's an IntelliTrace file. I can open it up and it opens up right within Visual Studio, and now I've got a rich set of information to start trying to diagnose this problem.
I can see exception data. I can see the Web requests. I can even scroll down until I see the error that occurred, and get the call right before to start requesting details. Now, I'm going to scroll through the list of events and I can see a bunch of exceptions and if I click on this right I can see that this exception has a null statement. So, now I want to start debugging. Now, this is really cool, because even though I have no direct network connection into the production environment, it's as if I'm debugging live on my own machine and I know this issue happened hours ago in production.
What you see on the right hand side is a history of the events that happened before and after that error that were collected by IntelliTrace. I see IntelliTrace exceptions. I see ADO. calls. And the rest of the view is like a local debugging session right within Visual Studio. So, I see variables. I see the call stacks. I even see the line of code that caused that exception. I could come in here, and I could rewind to see maybe how that null value is set. But, right now I'm not going to do the full debugging session, but you can get a clear understanding of all that rich data that I have at my fingertips to get to the root cause of that problem, to get a fix back out to production quickly.
So, what we've been able to show in this demo is how we've been able to continuously involve the operations team and the development cycle. We've taken advantage of the continuous integration and continuous deployment capabilities of Team Foundation Server, so we don't run into problems as we deploy into production. In addition, we've used IntelliTrace to be able to diagnose and resolve problems that happen in production, so that we can get fixes out quickly.
BRIAN HARRY: Thanks, again, Nicole. That was awesome. Thank you.
So, as you can see we've focused very hard on trying to help you get through that cycle of innovation as rapidly as possible. And the truth is, we've barely begun to scratch the surface here. As Soma said at the beginning, there's no way in one keynote we can do justice to the full breadth of new capabilities we've built in Visual Studio 2012. The lifecycle is an involved and complex process that involves a broad array of people and a broad array of activities. But, Visual Studio provides you a complete solution that can be customized to your development process.
And further, it applies to all the kinds of development that you might be doing, whether you're doing Windows esktop development, or device development, or server development, or Web development, or even building applications for other operating systems or platforms. It's a complete solution that enables you to handle all aspects of your development process.
So, if you walk away from this with sort of three key points that I want you to have. First is, things are changing. Things are always changing, but they're just changing faster and faster. You're being asked to create richer, more interactive, and more connected applications than ever before. And you're being asked to deliver them faster and more responsively than ever before.
Second, those applications Jason showed you some very cool examples of the kinds of rich applications you're going to be expected to build, and you need to be thinking hard about those experiences, and Visual Studio provides a great tool for doing that.
Third, Nicole demoed for you some of the new capabilities in our pplication ifecycle anagement that's going to allow you to do that, to build those applications, respond quickly to customer feedback and make sure you're building applications that people love. And Visual Studio is the best tool there is for accomplishing all of these things.
So, I invite you get started today. Visual Studio is available now. You can go to VisualStudio.com and try it out. But this is just the beginning. As Soma said, we've committed to produce a stream of value, a continuous stream of value that you can take advantage of. Today we are also releasing the Team Foundation Server Power Tools. Within the next few weeks, we'll be releasing the Productivity Power Tools for Visual Studio 2012. And by the end of the year, we'll be delivering our first update to Visual Studio. So, this is just the beginning. Expect more great things to be delivered continuously.
And, lastly, check out Team Foundation Preview. It's a super easy way to get started with our ALM solution, and try it out, low friction, get started in just a few seconds. And if you like it, you can continue to use it online, or you can use Team Foundation Server onpremises.
So, I thank you all for coming today. I really enjoyed chatting with you, and I hope you enjoy the rest of the day.