Beginning of my web dev career
When I begun my software development career 6 years ago, I was intrigued about how it was possible to create a web based software that can be used by thousands of users online.
It was fascinating to me because I used to develop software for Windows desktop and office software plugins. Since I am a MS software developer I naturally chose ASP.NET as my programming framework of choice.
It wasn’t all that difficult, as ASP.NET offered very similar development environment as my desktop dev environment. Heck, I even used the same IDE – Visual Studio 2005 at that time.
Things weren’t all rosy
But I didn’t make much progress. Even though the environment was similar to what I used to, it was still different. When I programmed for desktop, I had a lot of power choosing the UI – basically every user will be using the same UI components that I bundled with my software.
It wasn’t like this for web based software. Very quickly I found myself spending a lot of time dealing with browser inconsistencies that led me to venture out of the MS only world I used to live in.
I had to install Firefox, Chrome, Opera on my machine to test. I even had to purchase a MacBook just to get Safari to test my web app.
They were not the only reason programming for the web was hard for me. I quickly learned that the whole ASP.NET infrastructure was a leaky abstraction of how the web really worked.
What this means is that the whole ASP.NET Web form idea centered around a premise – to make it very similar to what desktop programming environment looks like – and the implementation wasn’t great.
True, ASP.NET is still very powerful. My company used (and still using) the best asp.net forum software you can find. I was able to test it in house, took a peek at its source, and put it to work on my company website. It performed beautifully – could easily take 1000′s of users online at a time – which was what fascinated me about web development in the first place.
The problem with ASP.NET was that I couldn’t find a reliable way to programmatically test the framework. I used to do unit test. I couldn’t with ASP.NET. Everything was coupled together and I could not tested UI without firing up the entire framework.
Fortunately I got an excellent asp.net forum on my desktop which allows me to look at how it worked. But I still found the framework lacking in some respect.
Our achievement in the previous company, despite lack of love of the framework
Our company put together a helpdesk software letting companies sign up and basically outsource their entire customer support operations to us. The software we built consisted of email ticketing, blogging and a knowledge base component.
At its peak, the software could handle about 40000 page requests per hour. Frankly, it was excellent because we used on 2 server as the backend. It was coded in ASP.NET, and to my surprise it performed very very well despite the hate I have with the framework.
And because of the services the framework provided, I was able to hook up our system with the online community software our company used internally. To my surprise again they worked well. We even released an upgrade package to clients that come bundled with the forum software. The work beautifully together.
After a couple of years I decided to leave the company and found a job in a software consulting firm. My job there was to offer software framework choice advice to companies that are at their infancy.
Guess what I recommended? ASP.NET. At least 80% of the time to at least 80% of our clients who didn’t have clear preference as to the framework of choice.
Because it worked. In the previous company I also had a chance to use PHP and RoR on a few smaller projects. None worked as well. Especially the programming environment. Visual Studio has been the king of dev environment till this day (for more than 10 years).
And ASP.NET is very complete, too. You don’t have to hunt and evaluate hundreds of products to put together a coding and production environment that work beautifully together. It’s not the case with php. The core was missing so many functionalities and we had to evaluate 3rd party solutions all the time.
On the other hand, MS put together a very powerful combo, from start to finish and it’s a no brainer for anyone who just wants things that work. I know there are communities of developers out there who prefer to tinker every single detail to create the “perfect” combo for themselves. I respect that but I just don’t see much point doing so. Time and energy are often wasted during the setup stage.
It was hard to believe. Despite lack of ability to test all aspects of the UI programmatically, I found I didn’t have to test as much really. It wasn’t difficult to get things right, and because I didn’t have to compile the web sites all the time after making even the smallest changes, it was very easy to test just using the browser.