Software Should Be Easier To Build, Not Harder - My Dream For The Future Of Development

Back when I started as a full-time software engineer in the early '90s, it was the beginning of an era when software engineering was about to explode and get easier. What language led this charge? It was Visual Basic (VB), first released in 1991. When Microsoft .NET was released in 2002, there were more engineers programming in VB, than every other language combined.

Why was VB so popular? It was because of its components' design and Rapid Application Development (RAD) to quickly build applications … a lot quicker. The rumor, I heard, was that Bill Gates held up the first release so that VBX’s (drag and drop UI components) could be added. That one feature made it so much easier to develop UI over other languages available at the time. Actually, this drag and drop UI design made its way into ASP in the '90s and then later to most UI development in Microsoft .NET and other competing languages and frameworks.

As a VB developer, I always felt like the redheaded stepchild. We were always looked down upon from other developers (especially C++) and still are. The biggest reason was the word “basic” in its name. Everyone thought it was just a toy language … boy, were they wrong. I personally worked for many companies that we could have not put out applications as fast as we did, with a few developers, if it weren’t for VB. Actually, at one company, a C++ lead developer came in (after our first release in VB) and said that much of the UI had to be changed to C++. This one decision delayed the next release over six months with no added UI features. Now that the new version of VB.NET came out in 2015, I still believe it is the fastest way to build UI with Microsoft .NET framework.

Unfortunately, for at least five years, I have been seeing a trend at Microsoft going in the opposite direction, away from RAD. This trend really started when WPF (Windows Presentation Foundation) was released in 2006. WPF had very few drag and drop components when released and when Silverlight was released in 2007, it was even worse. Things started to get a lot harder in 2009 when ASP.NET MVC was released since it does not allow the use of drag and drop UI development at all. A few years ago, I mentioned this to a panel of Microsoft project managers and they all looked at me as if I were crazy. They forgot that the “normal” developers are not like them or Microsoft MVPs. Living in the Microsoft “bubble” doesn’t help them think the same way that the most developers do.

With the release of .NET 4.6.2 and Visual Studio 2015, things are continuing to degrade with the removal of the visual design surface for Entity Framework, the removal of other project types, tooling not up to par or missing completely, and more. Other things like JSON replacing XML for configuration files is not making things easier either. It seems like other easy-to-use frameworks such as LightSwitch, WCF DataServices, Dynamic Data Entities Web Sites, RIA Services, and Workflow seem to be dying on the vine at Microsoft. The wizard to setup EntityDataSource for Entity Framework 6 does not work anymore. Other Visual Studio features have quietly disappeared like the CSS editor, database and architecture projects are gone, ASP.NET WebSite Administration tool is gone and more.

After I started writing this, ASP.NET Core was released which adds a brand new, very high level of complexity to building websites. Also, .NET Core assemblies will not reference correctly in Visual Studio from a .NET 4.6.1 assembly. For years, the .NET Framework team has guaranteed us language parity but this is not true with .NET Core (so far). The only thing I can think of is that Microsoft is trying to attract the open source community and is catering towards them, not the productivity of development teams.

When Microsoft .NET was released, there were only a few frameworks that we needed to know. They were Windows apps and web apps including web services. With the addition of tablet, phone, and cloud development, apps are getting a lot harder to design. When I am dreaming up a new application, I often go into architecture paralysis due to all the choices available in the Microsoft ecosystem. I try to keep the future in mind so I am often left wondering if I am making the correct decision. Again, the lack of guidance from Microsoft does not make this easy on us.

So, what needs to happen? Someone or a group of people at Microsoft needs to have an overall view of all development frameworks that includes SQL Server, SharePoint, Office, and Azure. Their number one goal should be to make development as easy as possible for development teams. Go back to more drag-n-drop/ plug-n-play features and visual design surfaces that also allow the ability for finer grain control if developers need it. This should also include architecture guidelines for each major application type. In addition, their creed should never change in the future. Let's face it, most frameworks have already been written. As developers and architects, we just glue these frameworks together and apply the logic needed for the appropriate industry.

The teams need to release and support updates also at the same time. Waiting around for over six months for Azure to support the latest .NET framework version is not acceptable. Documentation at Microsoft has never been great but it has gotten a lot worse lately… if the documentation even exists at all.

This is my dream for the future of software development. What is your dream?