Software Development Times has an article entitled “.NET's 18,000-Mile Checkup“ [1] which surveys a variety of early adopters of .NET technologies about their experiences with the platform. The article highlights the four key themes that have emerged:
First, in .NET, developers are no longer defined by the languages they use. While a C++ developer is widely considered more skilled than a Visual Basic programmer, .NET levels the playing field, positioning C# and VB.NET programmers in the same league.
While all languages have been created as more or less equal, this isn't entirely true in day to day use. For example, from my experience C# was clearly the language of choice for the .NET designers to build the platform and the IDE tools. Visual Basic .NET has a number of annoying compiler bugs and language oddities that, if Microsoft really spent a lot of time writing the same code in VB.NET these obvious problems would have been spotted and fixed before the product was shipped.
It's also true that most of the early adopters of the platform, myself included, eschewed VB.NET in favor of C# to because it was the new kid on the block and to possibly avoid the “Visual Basic programmer” stigma. This, too, was certainly one of the reasons that these bugs were not caught earlier in time to fix them before RTM.
But, glitches aside, the two languages are very nearly identical in every respect. Short of XML comments in VB.NET, I'd even venture to say that it is easier in a lot of cases to rapidly develop .NET applications with the great support for intellisense and incremental compiling within the IDE. But, at the end of the day, I still prefer the terseness of the C# syntax over the wordiness of basic.
It will be interesting to see a few years from now where Visual Basic stands in the grand scheme of things. My bet is that Microsoft is going to continue to support the language only in so far as much as they can intoxicate new programmers to the ease of development on the platform. Whether VB, like J# and others will continue to be a marketing “gimmick“ will largely be determined by the adoption rate of .NET platform developers.
Second, as .NET developers write less code and spend more time “uncovering” components in the framework and mapping those components to business processes, the role of the application developer is changing.
This is certainly true, and I for one think it is long overdue. One of my favorite quotes from people who have recognized the contributions of others coming before them said that their success was due in part to “standing on the shoulders of giants”. If we as a developer community can adopt the mindset of building and then later reusing component based software I think we can make significant strides in application development. I think we’ll be significantly further down the road to meeting our business goals if we can focus on the application logic itself rather than worrying about the plumbing that supports the platform.
Does this require also a fundamental shift in the mindset of corporate America, too? If we take a page from the history of *nix systems and open source efforts in general, I think we’ll see that the greatest of accomplishments come from thousands of people working together towards a single goal and iteratively improving on the software over time. Not every one of us should ever have to reinvent the wheel time and time again. It’s important to look to the future instead and say to ourselves it’s really OK if we aren’t responsible for every little thing. I strongly believe the key to success is “standing on the shoulders of giants”.
Third, integrating .NET applications with others that run in non-Microsoft environments remains a complex undertaking. .NET enables you to do that through XML Web services. So does Java. And while Java lacks a branding strategy comparable to .NET’s, it is alive and well.
Now this is where things get tricky. I think we're all agreed that, at the heart of things, it's really not about the language, or the platform. It's about getting things done. Quickly. Productively. In a way that opens your systems in meaningful ways to other systems within your enterprise or to your business partners. Whoever is first in really making this happen has a good chance to win. But first, of course, is no guarantee of success (even Microsoft dismissed the Internet at one point), but whoever does it *right* is going to be king.
To do it right, Microsoft is going to have to be on the bleeding edge of technology, adopt open standards where it makes sense (and this is really at odds with being on the bleeding edge of anything, unless the standards are yours), have outstanding training materials and resources available, and have easy to use and powerful tools to make it happen. This sounds like Microsoft to me -- all of these qualities go a long way toward explaining why they are as successful as they are today.
Fourth, .NET is still a work in progress. Some aspects of the framework—particularly servers based on previous-generation Microsoft technologies—are not yet fully “.NET-enabled.”
Certainly, the overall success of the .NET platform strategy for Microsoft will be in pulling together and integrating all the platform services in a common way and building server products to take advantage of this new platform. .NET may be the technology of today to help make this happen, but the overall vision for the Windows platform will be achieved by developing this common infrastructure and making it accessible in an easy way to programmers of all pedigrees.
I predict that the next wave of development efforts will be to this end. The use of .NET technologies for integrating disparate systems within the enterprise has only proved marginally successful or appealing for a number of reasons. As businesses seek ways to maximize the value of existing investments more and more effort will be spent on enabling applications to interoperate with one another to exchange information and move away from silos of information.
I’m very fascinated and excited by what this potential means for the future. Most enterprise organizations have business data in so many different systems that most would be hard pressed to given an account of what data lives where. The majority of business “applications” are those that are based on Microsoft Office tools such as Excel or Access and store information only locally to each application. I see a lot of work to be done to bring all this information together, in real-time, to business users to empower them to make decisions at an instant. Now that truly is 1o degree of separation, business at the speed of thought, etc. etc. (it's getting there!).
[1] .NET's 18,000-Mile Checkup: Early adopters find surprising results from developing on Microsoft framework