A project which has skirted maintenance for so long becomes so complex that the cost of adding any single feature vastly exceeds the value generated by the feature - at this point your project is dead and should be restarted from scratch. Sources of complexity can include code and superfluous project infrastructure/superstructure. Poor project build management can lead to unpredictable library configurations and linkage failures. Poor deployment management makes it difficult to add files. Excessive duplication in code can give rise to many partially broken and slightly different implementations and reimplementations of the same idea - to the point that solving the N+1 problem becomes a complete crapshoot. Poor dependency management leads to an inability to test or refactor, which leads to a bug deathmarch and regression hell. Excessive use of shiny hammer languages and technologies leads to runtime bloat and an inability to debug. This same problem also makes it difficult to grow the development team as they fight to install the umpteenth package just to get main.cpp to compile. Then nevermind the fact they'll have to read several libraries of congress and learn a plethora of tools just to debug one for-loop. Oh, and your link times suck, sorry. Oh, and that means your integration server is at least 3 years behind your current trunk changelist trying to catch up. Guess it'd also be a good idea to replace that 386DX that's building your code...that is if you can figure out how to put it back together without breaking anything. Better get busy installing those packages. Yep, if your project is here then your project is boned.