A group blog from members of the VB team
Here's another community interview from our Italian Visual Basic MVP Alessandro Del Sole, this time with yours truly. ;-) I decided to release this one today since it's my birthday.
Don't forget to check out the Visual Basic Team page for pictures and bios and visit the home page of the Visual Basic Developer Center for a link to all these interviews as well. My picture up there is from a couple years ago when the Oakland A's went to the playoffs... ahh.. memories....
Anyway, here's my interview with Alessandro:
1. Nice to meet you Beth Massi! Let’s begin by asking a simple question: where are you from?
I was born in San Pedro, California but I moved to northern California in 1991. I had a very brief period where I lived in Seattle for 8 months in 2002 but I’ve lived here in the San Francisco Bay Area ever since.
2. We all know that you’re a Visual Basic Team member, but could we know something more about your role inside the Team?
I’m a Visual Studio Community Program Manager and I work with the Visual Basic team on engaging with their communities and producing and managing content like blogs, videos, articles, webcasts and of course lots of presentations! I also manage the content on the Visual Basic Developer center on MSDN, which gets a ton of traffic. I also now work with the Visual Studio Office Client Team (VSTO) managing their online content and community on the VSTO Developer Center and participate in many third party community sites. I get to work across a lot of different projects internally as well -- they keep you busy here ;-).
3. What’s your favorite Visual Basic feature regarding the language and/or the IDE?
There are so many but I think LINQ and XML Literals are my favorite recent features. XML Literals can be used in so many interesting ways and coupled with LINQ you can be extremely productive as well as very clear about the intent of your code. Less code means less bugs, I love it!
4. How long have you been working for Microsoft and what was your occupation before joining the VB Team?
I joined Microsoft in March 2007. Before that I worked for a variety of software companies and software consulting firms. I began my professional career after I graduated college in 1994 but I wrote my first program with BASIC on an ATARII 400 in 1981. I have always focused on business applications and information systems and building application frameworks for that type of software. I started making money writing code in Clipper and then FoxPro (can anybody guess how old I am now!?). I was active in the FoxPro community until .NET came around and I learned Visual Basic.NET and fell in love with the platform and the language.
5. Why do you think VB is such a great language?
Because it’s case insensitive and is very easy to read, and with the background compiler and IntelliSense VB is your main guide into the vast .NET Framework. It didn’t take me very long to learn the language syntax because it just made sense and it helped me quickly spot trouble with its instant feedback (background compiler) as I typed. I think this is why it is a great teaching language as well. I learned BASIC when I was only 8 and even though the language has drastically changed since then, its principles are the same – there’s a low barrier to learning it and becoming productive.
6. Have you ever been to Italy?
Yes! I have been there twice and all over Italy. My nona and nono were from the island of Ischia and so I love it there. I think my favorite city is Roma because I love the city lifestyle as well as the ancient Roman history.
7. Would you like to tell us something about your life outside the office (how do you like to spend your free time, what do you like to do when/if you go out in the evening or when you’re at home and so on)? I love cars (I’m selling one by the way), mountain biking, hiking, dancing and wine drinking. Most of all I love laying in the warm California sun listening to an Oakland Athletics baseball game on the radio.
8. Who is your favorite musician? I love a variety of electronic music and classic rock, so it’s hard to say. One of my favorite DJs in San Francisco is Miguel Migs.
9. What’s your favorite food?
Hands down, my mother’s manicotti.
Thank you very much for taking time to answer these questions and letting us know something more about you!
Visual Studio has been partially complete over the last 3 releases (.NET 2003, 2005, 2008). Is there any chance that VS 2010 will be complete and not have missing featues (VB refactoring in VS 2008, C# like project management for VB 2005, TR1 support in VC++ 2005, profiling as a standard feature like it was in VS 6.0, full documentation for the current .NET framework and not a dump of reflector/ndoc output)?
VB's lacking of built in code refactoring is disappointing and the third party Refactor! add is less useful than the build in C# refactoring found in VS 2008.
We'd hoped that .NET 1.x, 2.x and forward releases would bring VB and C# closer together in language features and VS tools but they seem to be diverging. Essentially, we want to see more emphasis on the .NET base classes, development tools, code quality tools (e.g., static analysis) and less emphasis on language features that add minimal increases in productivity. Our aim to improve code quality, reliability and, most imporantantly, ensure that code written by team members is of high quality and not just 'i'm done and wont ever see it again so quality does not matter' semester project.
I think you will find that the Visual Studio Languages team is now dedicated to bridging these gaps going forward. I asked the language design team parity and strategy questions in this Channel 9 interview that you may be interested in:
However, I do find Refactor! 2008 version to be very full featured. In fact they added about 15 additional refactorings for Visual Basic 2008.
Which features are you missing in Refactor? I bet DevExpress would love to hear the feedback.
Also I'd be interested in hearing your thoughts on LINQ and why you don't believe this to be a feature that improves productivity. I think a language feature that requires you to write considerably less code is a good thing.
Within the code quality realm I think Microsoft is working more in that direction. What kind of tools would you like to see? Something like FXCop or better testing tools that work in more scenarios to support your own application frameworks? Or are you interested more application frameworks like ASP.NET MVC that encourages quality and testable patterns?
Thanks for the feedback!
Static analysis is a must for us in that we try to ensure code is of high quality and find bugs before they make it into production. FxCop is a step in the right direction but falls short when compared to static analysis tools commonly used in the embedded C/C++ developer community. Essnetially, we want to identify as many possible problems/warnings in the code using automated tools as possible including complexity analysis, duplicate code identification, repeated subespressions, and other traits of poorly written code. One common case we've seen in ASP code is repeating prefixes to data elements (e.g., seeing my_object.item(j).invoice(k).line(z).field1 over and over again in the same function with just 'field1' changing).
Linq is in our newer projects but mainly for select queries of SQL databases. We discourage its use for other purposes for maintainablity reasons. Generally, we shoot for code that someone with 1-2 years of professional experience could understand and maintain. It also follows (I forget the MS executive that stated this) the Monday morning, didn't sleep the night before, dead tired programmer test of maintainability. This is to lower the total cost of our applications given that 3/4 or more of the cost is after it is deployed. In other words, one should not concentrate on cheap to purchase but cheap to own over its own lifecycle (e.g., most people do not buy the cheapest car because it will cost more since it breaks down more often and has a much shorter lifespan).
Refactoring for VB should be built-in to Visual Studio just like it is for C#. A third party product, such as the free version of Refactor 2008 for VB falls short for the following reasons
a) It does not have a consistent user interface between languages (we have many mixed languages solutions with VB for some sub-projects and C# for others). Therefore, refactoring C# and VB will be different in that not all refactorings are the same between the languages and that the net result of refactorings in not the same in the source code yielding differing code lines over time (e.g., extract method should as closely as possible keep the same syntax/code structure/generated comments when done in C# and VB).
b) It is not built into Visual Studio 2008 and therefore will be more likely to break, not work correctly and not be patched/supported as well as Visual Studio. I've seen this with Refactor add ins for Visual Studio 2005.
c) (most importantly) Microsoft should as closely as possible provide a consistent and the same set of tools for C# and VB. We want developers to easily transition between C# and VB development environments and not have to learn the idiosyncrasies and gotchas of each.
This compares the free Refactor 2008 version versus the built-in C# refactorings in Visual Studio. One cannot compare the non-free Refactor add-in to Visual Studio since it requires extra cost, extra installation time, extra maintenance time and adds extra complexity to the normal developer desktop machine. This is important when you consider that many shops such as ours use Visual Studio 2003, 2005, Visual Stuido 2008, XP professional, windows 2003, SQL Server 2000, 2005 in actively developed/maintaned software systems. Our systems are targeted with a 5+ year lifecycle after initial deployment to production. Rewriting/upgrading/porting to new framework versions, OS versions, language versions, Visual Stuido versions is not justifiable unless we have a significantly large rewrite/enhancement. Therefore, our systems get more or less fixated to the platofrm that they are initially developed. A generic small shop with one or two applications would not have this complication.
We would really really appreciate refactoring of TSQL stored procedures (even real basic ones like rename variable).
Patterns, ASP.NET MVC, etc are decent additions to our environment and help considerably. Our method is to solve the business problem first then find a pattern that fits the business problem. We've found that recent graduates will want to apply a pattern first before even solving the business problem and often not even solve the business problem at all by getting bogged down in framework building, pattern building, cool coding style of the week, and resume driven development. One contributing factor to this poor development practice is that many younger developers leave before 1.5 years before they even begin to understand the business, the data, the acroynms, the existing applications and existing code base.