One of our colleagues just announced she’s moving from MV to .NET. I haven’t written a blog entry for a while here so I thought I’d share some random thoughts on the topic.
I suppose I should start by saying one doesn’t really move from MV to .NET. One is a database management system (DBMS) and the other is a development framework that includes connectivity to any number of databases. Pick people understand that their world of BASIC and the MultiValue DBMS is vastly different from the world of object-oriented languages, flat/relational/FNF data structures, and CRUD queries. So for us, this can be a sort of migration, a career change, maybe as big as moving from the auto factory into the restaurant business. Ahem – maybe I should come back to .NET…
The .NET Framework is huge and you’ll never really be able to absorb all of it. Don’t try. It’s OK. This is a never ending learning process. Just learn what you need when you need it, make sure your employer understands that there is an ongoing learning curve, and try not to sip from the firehose or you’ll find yourself constantly overwhelmed by buzzwords and details. For example, there are the basic languages C# and VB.NET. There are about 30 others that no one ever mentions which are based on the Common Language Infrastructure and the Common Language Runtime. When you’re learning .NET, try to focus less on the language and more toward the general understanding of what you’re trying to get the language to do. After that it’s all just syntax.
And there’s more than just the CLI, CLR, and languages. There is ADO.NET, ASP.NET webforms and ASP.NET MVC (different!), Winforms, Silverlight, Entity Framework, Reflection, WPF, WCF, Sockets, Streams, Collections, XML, Configurations, Profiles, LINQ, Parallel Programming, Providers, Performance Monitors, and I dare say hundreds of other libraries with various nuances. You may have to deal with the nuances of Ajax, XML configuration files, and various security models. You’ll find that some areas are documented better than others. But there are thousands of websites, specialty books, and experts everywhere. Learn how to fish for your information and you won’t go hungry.
Microsoft doesn’t provide the best versions of all components. They provide a solid base of tools and leave it to the open market to improve on the tools that they provide. For example, the ObjectDataSource is a limited component but there are any number of websites, open source libraries, and commercial components that can be used instead of that component to provide data to your web forms controls. Microsoft created the underlying libraries and sample datasource controls, and then they moved on to improving the technology rather than each specific control. The MV DBMS vendors could learn some things here – when they try to be everything to their user base they stiffle innovation and saddle the market with mediocre proprietary tools. They’d all do much better to create better interfaces for others to build upon rather than trying to create one-size-fits-all tools themselves.
Similarly, Microsoft doesn’t tell us how to write code anymore, they give us a bunch of options and leave it to us to decide what we like. For example, ASP.NET web forms and MVC are both equally well supported and neither are objectively “better”, only subjectively in the eyes of those who choose one or the other. And you can use C# or VB.NET together in the same environment, or use PHP.NET or Iron Ruby or any others. There is no real “right” here.
As soon as you think you have a handle on version X, version Y is on the horizon. That’s just a fact of life with this stuff. I always fret about falling behind but I also always wait until the first service pack past a point-zero release before I adopt anything so that I don’t have to fight with beta code and adolescent first releases. It’s always less difficult than I imagined to get up to speed with the latest version, as long as I take the time to do it.
And that brings me to a point which sort of rounds out the others. You must work with this stuff on a regular basis to get the same sort of comfort that you have with MV. It’s only difficult if you don’t use it regularly. Honestly that’s the way I feel about U2 and a few of the other MV DBMS platforms – I don’t spend much time with each of them, so every time I hit TCL/ECL I feel like I’m in a foreign country – while people who live there have no problem. Exercise your knowledge every day and keep busy reading books, or I guarantee you’ll never feel like you’re really a master of the craft.
For anyone who says they avoid .NET for all of the reasons I’ve mentioned above, when you think about it, the same concepts hold true for most anything – databases, operating systems, SQL/ODBC, Java/JDBC, or being a chef or auto mechanic. We just need to immerse ourselves in our trade and endeavor to ride the continuous waves. Some people say the object-oriented GUI world is just too much investment with not enough return, while others (myself included) would say the returns on the investment are well worth it. In other words – I feel I can do a lot of very cool stuff with this technology, and I don’t get that sort of satisfaction (anymore) with an MV DBMS and BASIC. And lets face it, people aren’t buying character screen apps with telnet like they used to, so I dare say an investment in technologies like .NET are a requirement and an argument about whether or not it’s necessary or valuable is really more for fun than for setting the company direction.
For better or worse, in the MV world there aren’t many waves to ride, there isn’t much new in our world, not a lot of studying to do, and then too many people find themselves swept away and wonder what happened. So I encourage everyone to find a new wave to ride (I think .NET is a good one) and combine your skills to create better, cooler, and more marketable software.
Personally I’ve combined my MV skills with .NET by using mv.NET, once I came to appreciate the benefits I registered Nebula R&D as a worldwide distributor. I think it’s better to integrate these environments rather than migrate. If you can pitch that to your management convincingly then you may be able to avoid a career change. Drop me a note – I’ll be happy to help if you think there’s still a chance to save your environment from people who want to toss MV for something else.