- SPAGHETTI FLOWS FREELY: The codebase is large enough to require some refactoring, but very little of it has ever been done.
- OUTDATED PLATFORM: The site is using outdated technology that no good developer really wants to touch anymore (i.e. Microsoft ASP, data-processing-centric Java, VB.NET, etc.)
- EXPERIENCE SUCKS: The site is ugly, hard-to-use, etc.
If your app passes on any of the three, it may be worth salvaging the app. 3 strikes, it’s out.
Side note… who is to blame for an application to get to the point that it needs tossed out the door? If resources were unreasonably constrained by non-IT management against the recommendations made by IT, then the non-IT management is to blame. However, if IT never asked for additional resources to avoid the 3 strikes, then it must take full responsibility for the impending death of a codebase.

I think you need to add point #4: website no longer scales because it was written in slow-as-mollasses interpretive toy-language (ROR, Python etc:). Take 3 picks out of 4 and a rewrite is necessary.
P.S. Sorry couldn’t resist after your cheap jab at VB.NET which rules when combined with LINQ).
My experience is that .NET programmers prefer C# these days over VB, even if it’s not entirely rational.
To clarify, I don’t put .NET into the category of “outdated”, just the VB dialect. Could be that I’m sheltered though, and lots of .NET developers out there still prefer VB over C#.
VB.NET IS outdated, when Microsoft initially created it they did two huge mistakes which they haven’t been able/willing to fix ever since. One mistake is the possibility of calling any arbitrage method/property/field of objects in untyped mode and also having this mode the default which basically completely discards all typesafety which is one of the largest assets static languages have. The other mistake is the background compilation which completely shanghais your computer and makes it feel like you don’t any longer control it if your project has more than some threshold of amount of lines of code…
I used to work on a project with several hundred of lines of VB.NET code and I actually had to go_tolunch_ just because of double clicking the .SLN file…!
I know they came out with some nice XML candy in 2008, but in general terms VB.NET truly sucks BIG time and is not suited for projects larger than some certain magnitude due to the background compilation mode and lack of typesafety (which everyone uses since it’s the “default mode”)
So let me get this straight: when Microsoft does loose typing = bad, when Python, Ruby etc: do loose typing = good. So obvious, why didn’t I think about it. And there is option strict on button if you want enforced type safety in VB.NET, so what’s the point again?
There is also a button to turn off background compilation if you don’t like it. Many people swear by it because with fast enough (read: contemporary) systems it is a godsent; as soon as you type in the next line it highlights any errors in red. And why not turn off background spelling correction in word processors while we are at it ? It is essentially the same concept but nobody is ragging on Firefox for inserting those red swiggly lines in textareas. Oh yes, it is good vs. evil again, that explains it.
And do I agree that LINQ-and-Literals-based XML handling in VB.NET is not only “some nice candy” but it is the most revolutionary, powerful and comprehensive approach to functional XML programming, well ever (at least when it comes to mainstream languages). It is worth the price of admission alone if you do lots of XML processing.
“The site is using outdated technology that no good developer really wants to touch anymore.”
You have to be kidding, right? Commercial reality check - throwing away code for this reason is madness. Anyone remember Netscape?
@Saggett - only if it’s combined with the other two strikes do you toss the codebase. Outdated technology by itself isn’t enough of a reason.
white text on black background = hurting my eyes :)
I’ve answered the stackoverflow question
http://beta.stackoverflow.com/questions/23899/best-practices-for-refactoring-classic-asp
but now I found out you changed jobs (an obviously no longer my long-winded yet entertaining advice!
Oh well, maybe somebody else can use this.
PS: email me to let me know if you even read it!
Congrats on the kid, job. Take care of that heel.