| As I see it, software rots because though maintenance is a permanent and recurrent cost, the ultimate cost for it (codebase abandonment) lies in the distant future. By the time it is needed to flush the big ball of mud down the toilet, the people responsible would have probably gone on to better things. Or to another big ball of mud project in another company. I guess it is a case of misaligned incentives. Personal experience: In one of my previous positions, as the most senior engineer on board, I was asked to survey our system to determine whether it was suitable to be the basis of yet another deliverable project. I spent a month doing this, wading through the big ball of mud which came into existence over the course of five years and delivering three projects (barely) using this codebase. My assessment was pretty honest and I asked for time to attempt paying down this technical debt to a reasonable level before we go on ahead to use the code base on another project. Management, at the end, did not authorize the "debt-repayment exercise". Perhaps I should have pushed harder but I was told it was "above my pay grade". At the end, they began insinuating that I was responsible for it all. Simply amazing. Soon, I bid them adios. As I understand it, the code base has been discarded in favour of complete redevelopment. Which will take another two to three years. |