I was going to write a single blog about my day at MSDN Dev Con, but it was so awesome I am going to split it up. I have pages of notes. I highly recommend if you have a chance to make it to one of these events to go and listen. Visit a track outside your specialty and just open your mind a bit about what else is happening in the Microsoft world of software. I will write more about that in another post. This one is going to be about VS 2010.
I was not actually looking forward to this session. In my mind we just got VS 2008 and most people are not even close to adopting it yet, why should I look ahead to 2010? But since we integrate into VS very tightly, I needed to look at what Microsoft is doing and get a feel for how much work it will be for us to support 2010.
Let me start by saying I was wrong; I did need to attend this session. It had a lot of content that just blew me away. A lot of this is already present in VSTS 2008, but I had never seen it either. The last launch event I attended was VS 2005.
Really, really big show
Visual Studio 2010 is going to be a BIG release. Total rewrite of the UI in WPF. It is not there yet, but they are saying they will do it. That pretty much tells me MS is making a huge commitment to WPF (Outside of Expression I have not heard of many people using it for serious business apps).
I can't cover everything, or even do justice to most of what was discussed. I have some highlights that impressed me that I want to share. If you want to watch a lot of video visit the Microsoft PDC site and look for the VSTS talks. All of this is present there (and more).
Team System Testing
The Team System Testing edition is getting some really cool new features to allow captures of debug sessions from testers. Complete with debug callstacks at fault points so developers can step back into the exact callstack at the time the tester had the error occur. That is very nice.
Gated Checkins
Imagine if you could set architecture requirements in your app that prevent the UI from talking to the Data Layer directly. Lots of people do it today, but there is no way at the time of checkin to enforce it. You have to rely on programmers not doing it, code reviews to catch it, etc. In VSTS 2010 you can set those type of design limits and have them enforced at checkin. The programmer has no choice but to follow the rules laid down by the architect. Otherwise the code checkin is shelved due to failing the requirements.
At first glance most of you will think this is only for huge software shops. I disagree. Even within our VistaDB engine we have public and private interfaces. We also have internal divisions of layers that we want to ensure are encapsulated. A large part of the refactoring work we have ahead of us is due to large sections of one layer have far too much intimate knowledge of the other layer. Just because everything is internal doesn't mean you should be allowed to go grab that object directly. Well defined interface layers are essential to stable software design. We could use this feature big time. It is far too easy within the engine to accidentally go up or down a layer without meaning to do so. Having a server side checkin to double check the code would be quite welcome around here. The more automated systems we can put in place for that type of system the more effective we can be as coders (and designers).
Layer Diagrams
Some diagrams at the Architect layer are what I think of as Visio diagrams. Simple block objects showing arrows. There are new diagrams that show you visually when an object is crossing a boundary (like the example above of layers in the engine). Being able to visually see these type of flow and sequence diagrams in live code is amazing to me. I have generated these by hand in the past and they are always out of date at the next code revision.
One I really liked was a sequence flow of objects from one layer to another showing the state of the object as it moved through one procedure to another and back up the stack. Very impressive to see this type of thing in action on live code. Don't know how well it would work in a production system, but I would love to try it.
CodedUI Test
Testing websites has always been tough for automated systems. There are solutions out there, but they are expensive. Usually companies resort to standard test sheets that have to be followed to validate a UI design. You can now generate interactive UI tests (WebForms, ASP.NET, WPF) through an app or scripted interface. Walking through the site once and doing all the options, and then validating the correct results using a cool "click the control" interface was very cool. It then could generate C#/VB.NET unit tests that can be automated. Drag and drop validation for forms (ranges, results, html output, etc) was way more power than I have seen in any other commercial offering.
The bad part of VSTS
And now the bad part (to me) - the price. What small company can afford to buy 5 editions of VSTS? The last time we priced the VSTS for 3 developers who each have multiple roles within the company the price was over $25,000. Talk about sticker shock. Why isn't there some Empower or entry program to get small shops started with VSTS?
I am not saying it is not worth it, but I am saying that a small company cannot afford to dump that much cash into an annual software expenditure. It is not a onetime purchase, you have to buy an MSDN subscription with it, and then maintain it to the tune of several hundred dollars per month per developer.
I just can't imagine very many companies under 25 employees being able to justify that expense early on. And let's face it, if you don't do it early then your processes will get built without it and changing to it later is almost impossible. I would think Microsoft would want to get smaller companies into the process early and then make money with them as they grow.
I was very, very impressed with the sneak peak. Made us talk about some of our processes and how we could emulate more of what we saw. Everything was a productivity enhancer, but at what cost?
Virtual PC image of Visual Studio 2010
You can get your hands on the pre-Alpha of VSTS 2010 now in the form of a VPC image.
Microsoft has a Visual Studio 2010 and .NET Framework 4.0 CTP Feedback page that includes full versions of Visual Studio 2010 and the Dot Net 4 framework. I think this is actually Visual Studio Team System because the presenters at the MSDN Dev Conference gave us the link to download and play with VSTS in a VPC image.
Download manager way to get the VPC Files - an article showing how to grab all the files using a download manager instead of clicking one at a time.
EDIT - I skipped my note on Parallel programming. It is going to be a large part of VS 2010 and .NET 4. They did a quick demo of some syntax support, but I don't have a lot of thoughts about it at this point. It was interesting, and everything is definately going multicore. I just don't see a lot of apps that need that type of simple split of for loops happening in the real world, maybe it's just me. Probably with some more examples I will get what they are trying to do in a more concrete manner.
EDIT Part 2 - BizSpark - I wanted to update this post thanks to some feedback from Michael G (one of our users) about the Microsoft BizSpark program. There is a program for companies less than 3 years old and under 1 million income called Microsoft BizSpark.
I went on to contact 47Hats.com about joining the program and received great feedback about the program. The way the program works is that you basically find a mentor to help you move through the program. They then sort of sponsor you into the program and answer questions, etc. You can look for these mentors directly on the BizSpark site.
In exchange you get access to MSDN Pro with VSTS for basically nothing but the paperwork and keeping up the program. Look through the docs and see if you qualify. It can save you some serious bucks.