Developing before ASP
I started developing websites around 1994 but I'd been tinkering with computers for a long time before that, my dad had bought home an Acorn BBC Micro Model B. We had a subscription to a magazine called Acorn User, these came with source code listings for interesting programs. You would spend the best part of a day hand entering a few thousand lines of BBC Basic to get the computer to output, run a basic game etc. I was one of the few lucky kids at that time that had a computer at home and took to it immediately. In my primary school I'd regularly get fetched out of class to get the one BBC Micro the school had working. We got a PC early, we had a 8086 with 512Kb of RAM and a 5 1/4 inch drive. At one point my dad brought home Windows 1.0 from work. I didn't understand what the big deal was, yes you can have a clock and a notepad open at the same time, so what! I saved up and bought myself a copy of Visual C++ and tried to learn how to code Windows apps from the reference books it came with, in hindsight I think those books assumed you knew C++ pretty well.
It really was the wild west back then, you were just figuring stuff out as you went along.
My first commercial developing experience was working for a company called Cheltenham Technical Publishing, they did mostly technical documents for the MOD. They'd seen an opportunity with the arrival of the internet and added a team called the EPG or Electronic Publishing Group (yes they were awful at naming things. The company was a weird mix of older ex-military people in the traditional publishing arm of the company, and young web developers in the EPG. There had the new windows web server software called O'Reilly (yes the book company) Website, which could run on Windows NT 3.1. We hosted all our sites on that on a single Windows NT 3.1 server in the middle of our office. I remember it had a BNC connector you had to be careful not to knock because they were a bit delicate.
It really was the wild west back then, you were just figuring stuff up as you went along. Quite often nobody else had done it before you. That also meant you had to figure stuff out yourself. You could easily burn days head scratching on a problem. There was no Stack Overflow, no online guides, no blogs. We used to get software updates on free CDs attached to computing magazines, downloads took too long. If you wanted to search for something, it was Yahoo or Alta Vista. The would mean a trip over to the one machine in the office which had internet access, via a modem and dial up to the internet and search. Launching Trumpet Winsock and listening to that thing screech while you waited for the web browser (Mosaic) to load. All the while a queue of other employees formed wanting to check their email. I would often pop out at lunchtime into town to the book shop and try and find a book which would give me clues what to do next. There was a book O'Reilly's Web Master in a Nutshell which contained pretty much everything you needed to know about HTTP, HTML, CGI, etc. That was a godsend but if it wasn't in there you were on your own.
We started developing using WinCGI, first using C but quickly moved to VB for development speed. It meant we didn't have to worry about memory allocation etc. WinCGI was clunky, obtuse and complex. It also needed compiling and deploying to the web server to test anything. It was slow work, most sites were static HTML back then. One site we were building was a searchable database of country walks for the Department for the Environment. You could select what facilities you wanted and the county or similar and it would show all matching walks they had that met the criteria, along with an image of an Ordinance Survey map. It took us weeks to get the site running, figuring all the HTTP POST events and searches in a MS Access database. We had to meet certain accessibility guidelines and browser compatibility requirements so has to use HTML 1.0. Let's just say tables weren't even allowed. Everything back then was white backgrounds, black times new roman text, blue links (purple once clicked). CSS wasn't yet a thing, styling was done with tags (<FONT> anyone?) We tried to keep webpages down to 1-5kb.
I'm pretty sure most of our sites had a visitor counter just so you'd know how many people had been on, there was no Google Analytics back then. At least one of our sites had an animated gif flaming logo! When we wanted fancy designs we used Image Maps for making images clickable, different parts of the image going to different URLs.
The ASP Era
A few years later we needed to do some updates to the country walks site, and nobody could find the source code. Source control wasn't really a thing back then for web developers. ASP had just been released, and I ended up rewriting the whole site (which was weeks of work in VB WinCGI) in about a day. The productivity gains of ASP could not be understated. It was simple to develop, it was designed for this one purpose, and it just worked. It was quick to develop, we could test locally and then you could just FTP the source to the server. We started talking to SQL Server databases, not access. Things could now be done in about 1/10th of the time it took to WinCGI. This allowed for sites to get more complex, they started doing some really useful things. We were now building things like ecommerce sites and a precursor to a build your own site with no experience software like Wix.
We'd moved web servers from Website to Netscape Enterprise Server, it had an interesting web UI where pretty much anything you did would show a dialog saying "SUCCESS" even when it failed to update. One change we made lost all the individual sites configuration and the tech support we spoke to said that we'd need to reconfigure from scratch. He also said we'd have to rewrite all our sites again when we did that, literally months of work. I started questioning how Enterprise the software was at that point. Turns out undoing the last config change and everything came back to life. Shortly after that we moved to this new Microsoft Server called IIS on Windows NT 4. Our computers were now internet connected, and we had Netscape Navigator 3.0 Gold and IE 3, developing was much more productive.
Around now CSS started cropping up for things and it made styling better, HTML still had lots of mark-up dedicated to layout but things had started to shift. Table layouts were still the norm. We used to take the design and chop it up, putting images into complex layered nested table layouts. It was so inaccessible and clunky, but it gave you pixel perfect layouts whatever resolution/device etc the user was viewing on.
.NET 1 and ASPX
.NET came out with ASPX came out and we loved it, it introduced things like Code Behind and WebForms. We'd got in the habit of trying to format our ASP nicely, code at the top, layout at the bottom. Code Behind made this formal, it was broken up into two files. You could go back to compiling your code, but now the tooling had caught up and developing was easier. Initially everyone loved WebForms, but like all of those abstractions, the moment you tried to do something for the real world you hit all it's limitations.
Around now I'd moved to a proper agency in Bristol called E3, it had a start-up vibe. Nobody really knew what they were doing, the web was still young. The office was above a bar, there was an office dog, we had a pool table, it had all the clichés. We all worked crazy hours and then all went out socialising together. The company took everyone on trips to places like New York, Vegas and Mauritius, but we had to get the client work out the door for that to happen. We thought we were cool, we thought we were doing something innovative and pushing what was possible. We built big sites like Orange's global brand site, Halford's ecommerce site as well as sites for KIA and O2 among others. It was still the wild west, but I started pushing for a lot of things here that started making life easier, stuff you wouldn't even question needing now, such as: Version control (CVS then Subversion), dual monitors for developers and a QA team.
You felt that the platform was fighting you every step of the way
We tried repeatedly to unit test our stuff, it was too hard, the tooling wasn't there, the language didn't want you to unit test. It was adding days to simple projects. We gave up.
What a game changer this was, ASP.NET MVC did everything I was trying to make Web Forms do. Finally we were free to do our own mark up, we could write XHtml or HTML5 or whatever we wanted. We now had control over how you built site. You could unit test controllers easier. It wasn't pretending to work like a Windows application. I loved it. This is when I really became a ASP.NET advocate. Up until now it was the tool I used to get the job done, now I really enjoyed developing. We didn't have to fight the system, it was a lot less opinionated and just worked.
Around now is when we started our own agency Gibe. We dabbled with being platform agnostic, but once ASP.NET MVC came out I didn't want to do PHP or Java. It was just nicer to do ASP.NET MVC. DI and SOLID was really being talked about and those principles made the code better and easier to test and worked really well with ASP.NET MVC. Gibe gave me the chance to build the agency I wanted to work for. A better work/life balance, less crazy hours, things done properly, fully tested and not rushed out. We can build up long term relationships with clients we liked working with.
Azure was introduced and I didn't get it, even though MS phoned multiple times to see why we weren't using it. We were hosting all our stuff at Rackspace Cloud on VMs at this point. Azure didn't have VMs it had Cloud Services or something weird. There was whole development work to do just around deploying on their infrastructure. Eventually they introduced VMs, SQL Azure and App Services. Now we were talking, we swapped over and have never looked back.
We've just really started getting going on .NET 5. Most of our sites are build around either Umbraco or our ecommerce platform GibeCommerce. Those didn't support .NET Core so most of our sites were locked into .NET Framework. I was on the Umbraco community team giving advice and input into the Umbraco port (v9). It's been exciting to see it come together. We've since started our first few ports of Umbraco sites now to v9. All our new sites are going to be .NET 5+. Having options around platforms to run on is nice but not essential. The performance is the big thing for me. I'm looking forward to seeing what we can do with it over the next 20 years.