Went to my first ever Microsoft event today. Got the t-shirt and the DVD, you can never have too many of those.
Ron Cundiff was the speaker and he covered some cool WinForms stuff like how to do unusal shaped forms and buttons. Pretty easy when you know how but I learned something new since I do mostly web development. Next he covered ASP.NET debugging and tracing which was nothing new to me but there seemed to be at least a few beginners in the crowd that were probably benefiting. Next he covered the big picture on the upcoming Team Studio 2005. I have to admit it looks like some really good tools for running software projects in a Microsoft shop but I have a feeling that using the full suite will be extremely expensive. I hope I'm wrong and the pricing hasn't been released yet but the fact that it integrates with Project and Project Server for the full shebang makes me think this will be expensive because Project Server is expensive not to mention client licenses for Project.
The highlight for me was the automatic generation of unit tests for methods. It stubbs out the unit tests but you still have to enter the expected values which makes sense. I know the purists will cringe at this and say you must write your tests first. I just know that I do rapid development and write a lot of good code without a net because it would take a lot longer for me if I was writing test for every bit of code. I use code generation tools and a lot of copy paste code re-use that allows me to create large chunks of functionality at a time not just units. I certainly see the benefits of having a suite of tests you can run to test whether your code functions as intended but myself, I have not yet been able to integrate test driven development in my work without also introducing a productivity killer. Having a way to automatically stub out the tests after I write the methods may be just what I need to get started in unit testing without killing my productivity and as I gain more understanding of the testing framework perhaps I can ease into test first development.
Whats so cool about having a set of unit tests that you can run is that it gives you more confidence in re-factoring code because you get immediate feedback whether you broke anything. This becomes more and more valuable the larger the project. In my current position I often have to try and re-factor very badly written code without any safety net other than backing up files before starting and doing functional testing before and after my changes. I can succeed at this most of the time because I have a lot of experience and can usually decipher the intent of even very poorly written code if I understand the business logic of the application. Having unit tests introduces a whole new level of confidence in the code but so far no project I have ever had to take over has had unit tests available to make my job easier but as this practice becomes more widespread perhaps that will happen. Making it easier to create unit tests is a step in the right direction.