The overall structure of the system may never have been well defined. If it was, it may have eroded beyond recognition. Programmers with a shred of architectural sensibility shun these quagmires. It has been my experience that not only are such software architectures unpleasant to work with, they are economically unsustainable. With each haphazard change, we sink deeper into the quagmire.
Subsequent modifications become more onerous.
Eventually the software becomes too expensive and too unpredictable to maintain, and it must be rewritten-an extremely expensive and risky proposition. Messy software results from the repeated application of expedient changes that are made without regard to their impact on the overall modularity of the software. Messy software is rehabilitated by reworking it to restore its modularity. Maybe if we spin the wheels something will happen. Developers perceive a problem but don't know what action is required to improve the code's modularity.