Since the 2019 COVID-19 virus pandemic started, one of the issues that I have seen is how hard it is for governments, non-profit’s, etc. to quickly stand up (get it into production) a website.
I’m not talking about blogs, but data-driven sites like the ones that show us the latest infection rate information. The worldwide web was invented thirty years ago, so why does it still take so long to create a site? In this article, I will discuss my thoughts on the subject and some things we need to do better.
The information above, from an article on March 13th, 2020, and as I am writing this (a month and a half later), there still isn’t a nationwide website available to Americans to do drive through testing for the virus.
Way, Way Back When I Started Writing Websites
I started my first website for software engineers way, way back in 1994 with help from Carl Franklin, host of .NET Rocks. It was so long ago, that there weren’t any apps to help with writing sites, so I used… you guessed it, Notepad! Before ASP.NET, before blogs, before WordPress… well, you get it. I’ve since turned all my sites (I’m down to three) into WordPress blogs since it’s very easy to create and add content. But, as a Microsoft .NET developer, I continue to write websites to this day. I was part of the original development team at Proflowers.com, which I believe was the first commercial site I worked on. They later even submitted and won a patent on a system that I wrote that allowed them to go to millions of dollars of sales a day during peak times.
History of Creating Websites with Microsoft Tools
After writing websites in Notepad, Active Server Pages (ASP) came out from Microsoft in 1996. This made it easier to write data-driven websites for Microsoft developers. We used an application called Visual InterDev and I will bet that any developer who used Visual InterDev would say they didn’t like it. This was a good start from Microsoft. Then, in 2002, ASP.NET was released along with version 1.0 of Microsoft .NET and 18 years later, it’s still a very popular tool to create websites and now can be done with .NET Core. I’d like to spend a bit of time talking about ASP.NET 2.0.
Between the release of .NET 1.1 and 2.0 in November of 2005 (2.5 years), the ASP.NET team at Microsoft spent a lot of time trying to figure out how to make creating a website easier by helping with all the things we do with every website. Things like security, themes, skins, personalization, easy to use grids that could hook up to data sources, and much more. Many of these features could be done by writing very little code or running a script in SQL Server. This one thing the team did, made it much easier for us to get a website up and running much faster than before! This allowed developers to spend more time delivering features.
The ASP.NET Dynamic Data framework had two important features that again, helped developers to spend more time writing features, not infrastructure code. The first was dynamic websites to create an entire website based on EF data models with very little code. I don’t think I would have used this to create public web sites, but it had a lot of promise for internal websites to administer data. If companies used this, they could let their developers work on public websites that usually generated income.
The second feature, that I did use in production was dynamically created web service API’s based on EF data models, again with very little code. I loved this feature since it eliminated the need for me to create controllers and instead, I could focus on the data, business rules, and features.
Using this framework, I created the first public-facing API for the San Diego, California based company Mitchell International. This API that I architected and wrote was for their product called Repair Center and allowed partners to retrieve and update data in our backend SQL Servers. Along with that, I architected a way to allow partners to create “add-ins” to the Repair Center application. This API allowed Mitchell to sell more licenses of Repair Center, which was not cheap. When I left the company, we were in production with our largest partner along with a few others and we were in testing with 40 more. We were also in testing with partner auto repair part companies to do profit sharing on each sale! Unfortunately, when Mitchell laid off all the senior developers in the department I worked in, including myself, the API, and Repair Center lost customers and I hear it’s not doing well anymore.
The Direction Changed in 2007
I’ve never written about this before, but I saw things changing at Microsoft around 2007, around the time that model-view-controller (MVC) came out in ASP.NET. MVC, which was abandoned in 2018, moved away from the plugin components, like the ones for ASP.NET web forms, to a more code-based model. While MVC allowed for more flexibility, it was a lot more difficult and time-consuming to create a website from scratch, especially the layout and debugging. If you had time, MVC could be your choice, but most companies want sites done as quickly as possible and MVC didn’t deliver. Now, in 2020, companies want sites done even faster!
Around 2012, Microsoft did attempt to help to create data-driven websites easier when it came out with Visual Studio LightSwitch. While the first version had a lot of issues, it did get better. Unfortunately, it was over in a shorter time than it took to develop when Microsoft abandoned it in 2016.
With the first release of ASP.NET Core in June of 2016, rapid website development didn’t get better. It supports Razor pages, which aren’t easy to code either, especially if you don’t use controls from third-party companies like DevExpress and GrapeCity. For example, I have previously written that at one company I worked at since they refused to use anything that wasn’t open-source, it took me 3.5 days to add a feature to a Razor page that could have taken around 3 hours with a third-party control. I estimated that one feature cost their customer over $1,125 more to deliver and fewer ease-of-use features!
Now in 2020, there isn’t a good solution for the rapid application development (RAD) way of creating websites in ASP.NET Core since it does not support the more plug-in component model way of creating data-driven websites. This COVID-19 worldwide pandemic is showing us, that RAD needs to come back to ASP.NET development, soon!
Call To Action
Now that I have talked about the difficulty of creating websites, the history of creating websites in the Microsoft ecosystem, and how things have changed in the last 14 years, what can be done? I would like to see the Microsoft teams start putting RAD back into all their programming platforms. I grew up in this world by using RAD when I started using Visual Basic 2.0. I heard a story that Bill Gates held up the first release until components (called Visual Basic Extension’s) were done so we could develop applications faster. I always believe that one thing he did, dramatically changed the programming world.
Last year, after the release of .NET Core 3.0, the ASP.NET team released the first version of Blazor. I’ve been excited about Blazor since I first heard about it because developers can use C#, not Java Script, to create websites. The beauty is the C# runs in the browser, not the server! Sounds impossible right? Well, they are releasing that version within the next few months. There is also a server-based version of Blazor that is out now. If you are a .NET developer, you should be checking this out now! I’ve even been talking about it in one of my conference sessions for the last two years. But, Blazor still isn’t as RAD as I thought we would be now, in the software development world.
I’ve always been a dreamer and a long time ago; I was dreaming of what software engineering would be like now in 2020. I thought that most of the software engineering would be just plugging components together, like pieces in a puzzle, and then just setting configuration values. When I dreamt this, I wondered to myself “Would I even have a job anymore?”. Then I hoped that I would be retired by then. Well, I’m not retired, and my dream hasn’t happened, yet.
Sure, there are some frameworks from Microsoft that are going in the direction that I thought we would be at by now, but we are a far way off from my dream coming true. Unfortunately, in the open-source world, we live in now, I don’t see a lot of development teams demanding rapid application development. Without that demand, my dream might never happen. I have brought this up to teams at Microsoft in the recent past and I just get looked at like I’m crazy. Maybe I am.
And one more thing, please don’t abandon frameworks after a short time (too many to list here). Why not make them better instead of creating something new from scratch? Development teams are tired and frustrated learning something brand new every few years or so. Learning new frameworks comes with a steep price tag, delay in projects, and in the end, less profit for companies or now, harder to create a website in response to a pandemic.
What do you think? Do we need better frameworks to allow us to develop applications faster? How do you think we should attack the issue? I welcome your comments and thanks for reading something I’ve always been passionate about.