Now what do I mean by that? Well, I'm addicted to the Visual Studio .NET product line, I can't live without it, but it's starting to bring me down and I'm still looking for the high I got from using Visual Studio .NET 2003. As with any humor what makes it funny is a small grain of truth. I don't mean this to be negative, but sometimes you just need to rant. Before I start with the negative, my mom always taught me to never say anything negative without positive comments first. Boy is there a lot positive to say, this
latest round of products from Microsoft fundamentally changed the way we developed web application, in such a positive way it's hard to put in to words. I could go on for a long time on all the software I have in production right now that was written using Microsoft .NET technology. When it comes down to it, us as developers aren't really here place judgment on our development tools, we are here to use the best tools out there to satisfy our customers’ needs and frankly there aren't any tools that compare.
Now to the rant, well for the most part I have two main problems that are really starting to drive me nuts, first is performance and the second is VS.NET crashing. Another side bar please, I've been in this industry since the early ninety’s and developing programs since the early eighties we've come a very long ways. I remember a couple of multiyear long projects I worked on in the mid to late nineties. These were VC++ apps that literally to 30 to 45 minutes to compile each code-build-link-test cycle, some of us built some test harnesses to cut this down, but still it took 3 to 5 minutes. As I continue my rant looking back at those projects really puts things in perspective.
So what do I mean by performance issues, I have what I think is a fairy high-end developer machine, not like this monster machine that Scott Hanselman put together (oh yes - I will have a quad core box sitting under my desk by the end of the summer) but a decent machine none the less, I have a Core 2 Duo running at 2.13GHz with 4GB ram and a decent SATA hard drive, I've also got a USB drive I'm using to leverage ReadyBoost on my Vista machine. Here is a link to a better description of my setup. I'm currently working on a fairly large C# solution with about 25 projects and 4 web applications. The application was written so that the user interface is a collection of Custom Controls or more specifically WebParts so each time I make updates I need to compile my control libraries or business objects libraries. If my system has recently been rebooted I can usually do the edit-compile-test cycle in about 15-20 seconds, that includes the ASP.NET page recompiling with the new control library. I have to admit, when you think about all the work it's doing, that is really incredible. With this type of edit-compile-test cycle you can really achieve the state of flow as describe in the wonderful book PeopleWare productive projects and teams, a classic must read. I have a terrible habit of working on too many things at once, I'm lucky, in that I can very quickly context switch however this generally results in a number of applications being open at one time on my computer. After about 3-5 days of working on my Vista machine (for some crazy reason I installed Vista Ultimate, might that be part of the problem?) my compile times slowly start creeping up to where they are starting to approach 45-60 seconds. In reality this just doesn't seem that long however it's just long enough to interrupt the "flow". I think the thing that really makes my blood boil is when I'm watching the output pane in VS.NET and it says the compile completes, its 100% complete with zero errors, then, as I usually run my computer with task manager open, that little green bar sits at about 50%-75% VS.NET is non-responsive and I usually say something to my computer like..."That's OK, I'll just sit here and wait, no problem I don't have anything better to do...are you finished?...are you finished?" (I get some strange looks from my better half, but I think she is getting used to it) then about 15-20 seconds later I can see if what I did actually worked. Alright again only about 15-20 seconds but it certainly blows-the-flow. That closes out the first part of my rant...in all reality, what VS.NET does is incredible, but the extra 30 seconds is just enough to let my mind wonder, check my emails, IM etc... (ding...maybe that's the real problem I have AADD and should look to fix my compile time issue with medications, trade one addition for another). One thing that I try to do to "keep-the-flow" going is with an excellent tool called TestDriven.NET this get's my edit-compile-test time down to a matter of a few seconds when I'm working on my business logic, if you aren't using this why not? In full disclaimer, I have CodeRush and TestDriven.NET plug-ins installed, I don’t think they are the problem. My prior machine was a 3.0GHz Pentium D and 3GB RAM, I installed Vista Business and the VS2008 Beta 2 (not in a Virtual PC). I don't plan on installing any other software on that machine and will see how it performs.
Rant number two...this one won't be nearly as long, about every 30-50th compile, as soon as I see that "Build Successful" message in my status bar, within a blink of eye Visual Studio disappears from my screen. No error message no log entry...nothing, it's just gone. I start it up and load my project (which takes between 2-3 minutes) and have never lost any work, but my solution settings (such as which files are open etc...) get lost. Really a little annoying. Whenever I get a free 4-5 hours I'm going to repave the machine and only install VS.NET and the key tools necessary for doing development, this time I mean it for sure, really only my development apps.
There, I got that off my chest after looking at the good the bad and the ugly, the reality of it for the size of our solutions and all the competing junk I have on my machine, I should be happy these compile in 5 minutes and I'm probably being greedy, but as with most developers I like to rant and complain.
Bottom line, thank you Microsoft for feeding my habit and providing me with a great (but not perfect) set of tools to write software to keep my clients happy and thus pay my bills, let’s see if we can do it a tad better in Orcas.