How do you convince a client that the current code base needs a real overhaul?

How do you convince a client that the current code base needs a real overhaul?

In the case below, I've repeatedly told the client that the project suffers a lot from "technical debt" -  but since the product (usually) works fairly OK, they don't want to "waste money" and "start over"...

Should I just carry our the refactoring while maintaining the product.

Or should I just add a few bugs here and there:
if Random(50)=0 then
  ShowMessage('Something went seriously wrong during this operation!'+#13#10+'Take backup and call support');

Or should I just push harder and convince the guys that it time for a real upgrade?


How to you convince non-technical people that the product need non-visual improvements?


Any suggestions?

Originally shared by Jørn Einar Angeltveit

Wow.  I just came across a form method with 4 local procedures - where one of them had yet another local procedure that contained three new local procedures.  Oh lord...  A total of 400 LOC!
Any higher...?


procedure Form1.MyMethod;

    procedure proc1
    procedure proc2
    procedure proc3
    procedure proc4
        procedure proc4.1
            procedure proc4.1.a
            procedure proc4.1.b
            procedure proc4.1.b

begin
end;

Comments