I recently touched base with someone from the good old VB6 days. They were good old days, but I’m not going to talk about them. He asked where VB.NET went, and it set off this weird thinking about how to explain VB.NET to someone that had dropped out and was only peripherally interested. I thought I’d share this, but many of you will want to skip.
“How is VB.NET doing? … never saw the final product, much less what it has grown into now.”
I suppose grown is the operative word here. It’s huge. No, bigger. And I don’t mean the size of the market or its respect. I just mean the libraries. And it’s not really about libraries anymore because Microsoft’s releases all things in relation to .NET – even the Xbox. Not via API’s or some other approach, but more libraries. So the size reflects the complexity of nearly every platform initiative Microsoft has come up with.
The rate of growth is still increasing. We have around 15 “modern” data access strategies and 18 (user) interface strategies. I don’t have my slide handy, but four or five of the data access strategy and a few of the interface strategies released in the last year. You could be spend all your time trying keeping up and you wouldn’t.
As a result the interactions with .NET are quite different. There were a large handful of people that knew just about everything there was to know about VB6 and before. Not everything, because it’s asymptotic, but close enough to touch. Now a handful of people are experts in a single area – anyone, like me, who covers more than one topic stays acutely aware of what we don’t know. No one is competent anymore in the sense we would have used that term ten years ago. This makes the personal experience profoundly different – instead of sailing, it feels like running Class IV whitewater, and Class VI if you’re actually doing stuff with a company on the line. Uptake is slow; even of generics three years old with a clear payback.
And the people. That’s a sad side. There used to be programmers who were hobbyist. I’ve been slammed for using that word – but this is a person who’s not a full time coder but passionate about coding. It’s not a job, it’s a joy. The grip from LA, the pet store owner from Arcata, the Canadian speechwriter, the dozens and dozens of people that knew about a niche ad weren’t afraid to dive in and do it. I loved those people; they made the tapestry so rich around us. They’re gone. Just gone. I propped up my brother as one of the last standing hobbyist coder until the last few weeks when he had a chance to give up and merge with an existing group. I feel his relief that he’ll play music and see his wife.
Folks would like to tap that old VB market, a lot of people recognize how many strong midsize companies exist today because of what someone started in their basement with VB or Access or FoxPro. But this will be a new tool, not VB. It might run VB as a language, but just like VB lassoed the complexity of C++ as a language, we now need something to lasso the complexity of platforms. It’s a new level we need. I think we have everything we need to build it, we just can’t quite (almost) tell what it should look like.
But as the hobbyist side of the rich tapestry withered, another surprising one wove itself. Microsoft itself changed entirely at the level that mattered. Remember when people were afraid to talk to you and even knowing you were on an NDA was a secret? Well that’s gone. People blog and they are excited and I’ve even had managers say “my job is to be sure my people are excited every day when they come to work.” Softies caring if softies in general are happy. I can feel a bit old hanging around there because they are so young – but I can also feel the energy and brilliance and the teamwork –even if there are still a few thousand teams. A bunch of softies are my friends now – heck I got my last piercing with a softie on tour.
There are more women than ten years ago, but it’s hardly balanced. There’s the Brian joke. A few years ago at PDC or TechEd there were more men named Brian speaking than women. But there are a large handful of us and I think we get respect for our accomplishments. I think we need to start way down the pipeline helping women know how fabulous, fun and exciting it is to be a software developer.
You would not recognize the MVP program. Gates, Balmer, Ozzie, all the superstars come and speak to us in a vast convention center. Yeah, I know you think I’m kidding. It’s something to put on your business card and Microsoft works to tell people who we are. I share my MVP lead with only a few hundred other MVPs and my last lead turned into a good friend. To those of us that were MVPs when no one knew who we were, it’s weird. I almost cried the first time I saw a “Welcome MVPs” banner on a campus building. It makes it harder to convince younger MVPs what Karl first told me “If you ever do anything to stay in the program, you don’t understand the program.” But we still have a feisty bunch giving the team hell in order to make VB.NET better as fast as we can. Yep, we’ve got daily communications with the team and yep, the listen. Or, well, sometimes anyway.
We’re currently coping with legacy .NET apps. When you start with a clean slate, you skip them for a while, but they are back now and we need strategies for piecewise improvements. Between that, the competence across technologies issue, and the sheer size of what we accomplish is driving me to the concept of human scale architecture or block based architecture as a current passion. .NET apps are rarely as small as 100 KLOC. At least not ones I see or hear about. They are generally gigantic, so the monolithic thing is a disaster. But so is the 3-tier/n-tier stuff. It’s just not enough, so we’ve been through this web-services arabesque. Good ideas, and really important to some scenarios, but just shifting around the deck chairs in others. It makes me think of Spirograph. The picture keeps looking different, but we seem to keep coming back around.
So, this is a lot of words not to answer a simple question. I’ve hardly mentioned VB and I guess that’s the biggest change. VB hardly matters. I mean a lot of us like it and it’s a really cool language, but most of what I can do in VB I can do in C# in nearly the same way. There is more difference within either language in any two adjacent versions than there are between the two languages. Languages are evolving pretty quickly. VB.NET has a nice OOP model, generics, lambda expressions, SQL-ish statements checked by the compiler, embedded (compiler checked) XML, the ability to automatically create help files for our libraries, an absolute ton of awesome toys.
Microsoft publishes numbers that there are more people in VB.NET than C#, but the rest of us can’t figure out what planet their using for the statistics. C# is common in my clients and the majority of my audiences. So I learned C# and am comfortably bilingual. VB.NET is hanging in there. It’s not what it was – but the world is most definitely not what it was either.