November 30, 2004
I just went to the Radio Shack website to look for something, and after every click on the main page, I was greeted with this:
If I was running a giant corporation, I think I'd hire coders who could develop a rational error handling strategy for our production website.
Of course, that's much easier to do in ASP.NET than cruddy old classic ASP. I'm not a big fan of the ultra-leaky "winforms on the web" abstraction model, but there's no denying that ASP.NET-- and the .NET framework-- is an order of magnitude improvement over ASP. That's why I was appalled that in the otherwise interesting How Microsoft Lost the API War, Joel wrote:
And personally I still haven't had time to learn .NET very deeply, and we haven't ported Fog Creek's two applications from classic ASP and Visual Basic 6.0 to .NET because there's no return on investment for us. None. It's just Fire and Motion as far as I'm concerned: Microsoft would love for me to stop adding new features to our bug tracking software and content management software and instead waste a few months porting it to another programming environment, something which will not benefit a single customer and therefore will not gain us one additional sale, and therefore which is a complete waste of several months, which is great for Microsoft, because they have content management software and bug tracking software, too, so they'd like nothing better than for me to waste time spinning cycles catching up with the flavor du jour, and then waste another year or two doing an Avalon version, too, while they add features to their own competitive software. Riiiight.
It's difficult to comprehend how a smart guy like Joel could be so blind to the massive, obvious benefits of a straight port to ASP.NET. Coherent global error handling is only the tip of the iceberg. At this point, you could not pay me enough to write in ASP.*
* Ok, you could. But it would be really expensive.
Posted by Jeff Atwood
I agree that porting from ASP to ASP.NET is brutally hard, and usually forces a total rewrite unless you want "worst practices" code. You'll get no argument from me there.
I still think it's worth it for your flagship applications, however. ASP is just so primitive.
I mean it is just a Recordset.Open type of application. It will gain nothing from the port.
It's his company, obviously, but I don't agree there is "nothing to gain" even if you did a basic Reponse.Write port of an ASP site. Just having a properly functioning debugger and breakpoints-- which I don't *ever* recall having in InterDev-- would be worth it as far as I'm concerned. I could probably name ten "bet the company" reasons you would want your flagship app on ASP.NET instead of classic ASP. And as Drazen pointed out, the least of those reasons is that ASP is on life support already..
but Joel is right. On the other hand, you are right too :)
Short term, he does not have any motive to move on for the reason he describes.
Long term, he has to move - ASP is not updated any more, and ASP.NET is so much better for the reasons you describe.
It is cost of switch against benefit that is crucial to deciding when to move. He estimates that cost is too big and benefit too small at this moment. I am sure that he is quite aware of the benefits of ASP.NET, but if staying with ASP costs less... he is a business, money ruleZ.
straight port to ASP.NET
Say what? Since when is porting ASP to ASP.NET a straight port? I'd call it a rewrite. Besides, in an application like FogBugz (which I use), I really don't see the benefits of moving to .NET. I mean it is just a Recordset.Open type of application. It will gain nothing from the port.
Maybe a total rewrite is too ambitious for the size of app he has, but I remember reading one of his articles where he cleanses the code base for a week or two. why not use this methodology in converting to. .NET?
I just revamped a 3 year old ASP site. I don't think I will ever do that again. Bad ASP code was so easy to write and as long as nobody follows best practices regarding security and patching on the server, it will still run, but bringing that code up to current levels of "acceptable" was one of the least favorite tasks I've ever done.
If I had known then how bad the code was, I would have just done a full port to .NET instead.