Friday, May 27, 2005

My Job (Venting)

I work in an ASP Classic shop. No COM, Stored Procedures for everything, the Database is the answer to every problem because that's all my manager knows how to do.

The only vbScript classes are the ones I've written. Every page just gets a huge Functions include.

Formatting is done with custom string parsers that are flaky, and extremely slow. The story is the same for Validation. Where there is client/server-side validation that is, most places if the input is invalid it's just ignored. Instead of Regex, string parsing is handled with lots of copy/pasted nested ifs for left/right/mid statements and lots of string concatenation.

A hundred context switches on a page are pretty much standard practice.

Everything's abbreviated until it doesn't make sense. Default is abbreviated to "dflt", TimeZone is abbreviated to "timezn". The Databases have no constraints, no FK's, are denormalized to a rediculous level, the IndexTuningWizard has never been run, there are no traces, every "lookup" (semi-static data to join with) is in an EntityAttributeValue style table with 5 different Value columns. If we need to store more than the 80 characters a single Value column allows, we concatenate the columns. The Text datatype is never used, even on pages that display one large block of text. Instead the text is split on newlines during insert, and inserted as single lines of varchar(256) with a column for line numbers.

We spend days going through renaming all pages in a site to prefix a new magic number for new clients even though they are physically different websites. Actually magic numbers are the order of the day. Recently a manager forced one of our database developers to remove the identity designation from a column being used as a descriminator for organization type because he was concerned that when one was deleted, and a new one added, there would be missing numbers. Missing numbers. On a surrogate key!

We could supply TheDailyWTF with a years worth of posts.

I'd like to be all intellectual and say "the language doesn't matter", but come on. VBScript. The c# stuff that handles batch processing is both faster and more reliable than the DTS packages used for the rest. The ASP.Net site I recently worked on for a demo was better than any production site we have now in performance, maintenance, features, and looks, and it was delivered in less time than it takes to copy/paste/rename one of the existing sites to setup a new client. And that's using NHibernate 0.8.3, where Pre-fetching is broken, so when that's resolved the one or two pages that aren't "click-boom" will be. The Database is normalized, with no abbreviations, and no EntityAttributeValue tables. ConnectionStrings are managed by DPAPI instead of the joke that is "here's the connectionString to database-A in an XmlFile, use it to get the connectionString for database-B (which is usually just database-A) from a table in database-A".

How do you convince people who are most concerned with keeping the status-quo that there's a better way?
Comments: Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?