April 19, 2005

Why I Rant About VSTS

I've been getting mixed feedback about my blogging about the VSTS pricing, and I think that I should outline my motivations.

For the last several years, Microsoft has been making a shift from being the "easy to use" company to being the "security" company. They've been doing everything they can to ensure that code that is released is of high quality.

Because of their efforts, we now have canaries on the stack, we have the .NET Framework which does its best to eliminate the need for the writing of native code by the majority of developers, we have DEP and support for the NX bit...we've got a lot. However, the biggest security issue is that code is still running on people's machines. That will never change. The next focus should be to ensure that people's code is as bug-free and stable as possible.

So what does Microsoft do? The same thing that got them into this mess in the first place. They release powerful development tools priced to the masses with absolutely abysmal debugging support. If you want your code bug-free, you are expected to either struggle with the Express toolset for hours on end to get it done, or spend the $800 for Professional and get the tools you need. Want code coverage? That'll cost you an arm and a leg more.

What kind of message is that? "Sure, you can write software for our platform...but if you want to write *good* software, well, you're gonna have to pay for it."

In previous versions of Visual Studio, it was the code generation that was held back. Lesser versions of Visual Studio didn't get the optimizing C++ compiler or all of the code wizards, but the debugging tools were there for people to use. If someone had a lesser version, they'd just have to write more code because the IDE wouldn't make the code for them. If you wanted to use some advanced platform features, you'd have to buy the higher versions because the lower versions didn't come with redist rights for the DLL's.

Now, the lesser versions are being stripped of enough debugging tools that instead of motivating new developers, they're going to get frustrated. They won't have the tools they need to find their bugs quickly and easily. As a developer, how many bugs have you found just by stepping through your code with the Watch window open and seeing the values appear in red to indicate the change?

I'm all for bringing in more developers with simpler tools, but by limiting their ability to debug their code, you're fostering a community where bugs are acceptable simply because the pain threshhold to find and fix the bugs is too high.

And fostering a community of developers who won't fix bugs is too high a risk for me to ignore.


Anderson Imes said...

You are typically spot-on with most of your observations, but I think I have to disagree with you on this point.

I think perhaps people expect too much out of a compiler & debugger. We expect these tools to point out our mistakes so that we can correct them. I've often thought to myself when I try to compile and I missed a semicolon in C# why the IDE just doesn't fix my code for me when I get the error "Missing semicolon at the end of this line" compiler error.

The simple matter of the fact is that the features that you are looking for are the ones that help you visualize the execution of the code. Tools like code coverage and visualizers enable you to further understand the execution of the code, but it will not 'de-bug' your code. If the debugger actually removed bugs from the code, I couldn't really see justifying my bachelor's degree.

In terms of those features aimed at the improvement of code execution visualization, I think that Microsoft has given us some tools in addition to the great debugging tools that we already had with VS 2003.

Visualizers are one advantage to VS 2005 in terms of code visualization. It's going to be easier for developers to track down bugs if they don't have to drill through 20 hierarchical object layers before they get to the real meat and potatos of that dataset or that XML Document.

Object Test Bench. You can definitely see the debugging potential here. Play with your objects easily and quickly without having to write a test or create a dummy app to test your object.

A good portion of being able to write efficient, simple, easy to read and understandable code is refactoring and with the integrated refactoring tools, this is made easier.

All of these features (plus many other small enhancements) are available with the Standard and Professional editions of VS 2005.

I think you are correct when you say that one of the buggest problems facing developers today is debugging logical errors. This is certainly the case and I think it's a really good problem to have. I agree with you when you say that debugging tools will aid a programmer to more quickly solve logical errors, but what I don't understand is how you think the code coverage debugger feature is really what makes VSTS the product that will allow you to write *good* software. The only person that writes good software is the development team.

Tools help, to be sure, but a good, well-oiled, software development team, featuring a kickass architect, an amazing developer, and a outstanding QA person (such as yourself), all being assisted by the most productive and attentive product manager can write bugless code. I've yet to see that team. Without these people and the communication that makes the whole thing work correctly, you can throw every debugging tool known to man at a project and you still won't come out with a solid piece of code with 0 defects.

I understand your need and your drive to see defect-free code (and I wish there were more QA people out there with your drive to have this happen), but I think you are looking in the wrong place for this. In addition, I don't think you can honestly call the debugging tools "abysmal" when they are already amazing and improved considerably in the upcoming version. It's not very accurate (unless you think that the current debugging tools are less than abysmal - dreadful I think, and that the new features bring the level of debugging up to abysmal). As well, I don't see what is being "stripped" from the next version of VS 2005. I didn't see anything about removed features. I don't think that by upgrading to 2005 you will have less debugging features. If that were the case, who would buy it?

Yes, if you want code coverage and you don't want to go across the street to get it, it's going to cost you. It's important, yes, but I think if that is the feature that will solve all of your debugging problems, and you believe that it will be the difference between you writing *good* software and writing something other than *good*, then you should fight tooth and nail for that product, because most companies aren't able to pinpoint that one product that will cure what ails them.

Debugging features can be replaced with 3rd party software. Team System isn't an enhanced debugging platform. It's lifecycle management. If you want more debugging features - go with thrid party tools. They usually do this stuff better and for a hell of a lot less than $10,500.00 per developer.

Michael Russell said...

I think you're missing the point.

Visual Studio's features in the past have been split into code creation, redistribution rights, polishing tools and debugging tools.

Regardless of the version of Visual Studio you got, the debugging tools you received were the same. With each incremental version up the tree, you got more code creation tools, more redistribution rights to advanced libraries, and better polishing tools.

I want you to do something. I want you to uninstall Team System and install one of the Express SKU's. While you'll still be able to build the same software, see how much longer your debugging time takes. See how much harder debugging is because of what has been removed in the name of simplicity.

I'll admit that debugging tools are only as good as the developer using them, but even a master craftsman will release substandard products if he has substandard tools. Right now, the Express SKU's are saying, "Learn how to build a house with only a hammer and nails. You don't need that level." VS Standard and Professional give you the level. VSTS gives you sandpaper and blueprints.

Anderson Imes said...

The express products are not development environments for production code. These environments are for "hobbyists". I really wish you wouldn't compare any of the features of VSTS to those in Express. Those are completely seperate products.

The express products are new. They have never been offered before by Microsoft. Microsoft has never released any development environment for free. They have offered discounted 'student' version of their standard products, but never a 'play with me for free' product. I don't understand why you, as a developer, would even consider these tools as a comparison. They aren't for you. You can't even sell the software that you write with these SKUs. Express is worthless, but they are made to be worthless.

Likewise, the VSTS products have never been offered. We've always had the Standard/Professional to choose from, Microsoft has just added another layer.

To be quite honest, I think it's really good that there is more definition between versions. Do you know what the primary difference between VS 2003 Pro and Enterprise was (besides the 300 dollars)? Visio integration! Big whoop!

I still don't understand what the problem is. You are getting more features for less money with VS 2005 Professional than you did with VS 2003 (including new debugging tools).

Like I said - any of the things that you find missing from VS Professional 2005 that would aid in you debugging woes, you can suppliment with 3rd party (often free) tools (sandpaper and blueprints), which is exactly what every serious company out there is doing already. If you don't change your process and you don't change your toolset, upgrading to VS Professional 2005 is not going to effect the 3rd party tools you utilize other than to perhaps to decrease it slightly (but I realize, not a lot). You are just buying your sandpaper for a hell of a lot less money and on occasion, the grade of blueprint you are using is even better than what you would probably get out of your $10,500 VSTS box. So who cares?

The only reason that you perceive a change in the rules is because the things that you are comparing have never existed before. Compare Standard and Professional if you wish to make the same observations as would be comparable to VS 2003. VSTS and VS Express are new and different.

KaRt0nEs said...

Well, I think that buying the Pro version of vs2005 and using 3rd party add-ons (like cruise control, nunit, resharper, nant, fxcop, etc.) can make your code very "clean, debugged and optimized" as the one we'll get from VSTS programming.

VSTS may simplify project managing times, but the rest of things (like bug detection, error correction, testing, etc.) can be "emulated" perfectly with tools (in fact MS is just creating it's own version of them, like fxcop, nunit, etc.).