Developer1: OK so we need to store lots of data, what should we use?
Developer2: How about an SQL database?
Project manager: Nah, that seems far too easy, lets use a hashed file system with no data typing and write all the engine transaction code ourselves.
Developer1: Well we need the application to be client server based?
Developer2: Shall we use an MVC model and a "dumb" database?
Project manager: Nah, that's just one of those established paradigms that all the boring people use. How about we put all of the business logic in stored procedures and all of the database validation in the client, yep sounds good.
Developer1: We need this to communicate over long distances?
Developer2: How about we use a web browser and HTTPS?
Project manager: What use established protocols, are you mad, we should create our own communications mechanism.
Developer1: Which language should we work in?
Developer2: Well I guess a modern language would be good to take advantage of the most up to date libraries and get good compatibility which current and future products, maybe even use an application framework.
Project manager: Huh you must be an amateur, you should be written in at least 4 languages, making sure that you do not have any experience writing in at least 2 of them, oh and you must be using ones that are no longer supported. Yeah much more sensible to use Delphi, Basic+, C# and Java.
Developer1: What platform should we aim for?
Developer2: Well if you make it a browser app well then it will work on all platforms even mobile ones.
Project manager: Nope, lets make it a Windows only app, and make sure the UI is not written in anything new, you wouldn't want to have easy Windows API access, that would be for wimps.
Now I understand the arguments against rewriting an application which is successful and still selling, however, the cost of completely restructuring the internals without being able to follow any best practice guidance and hand code everything is surely far worse and will lead to an unmaintainable project.