I have a friend; Let's call him "Ted".
Ted's place is a mess. Frankly, it's a disgusting, blatant, offensive, inexcusable mess. I visit Ted on occasion. He has a nice family. They're good people. Yet they live in near squalor and seem to be relatively unbothered by it. Ted complains regularly, but knows that sometimes there are circumstances beyond our personal control.
Allow me to share with you a few of Ted's household issues.
Scented candles are always burning in the kitchen, covering the smell of the garbage spilling over the bin and onto the floor. The trash overflows because nobody wants to carry it out to the garage where heaps of garbage bags sit cooking in the heat, producing flies, and attracting vermin.
Ted explains that they cannot take out the garbage because more trash in the garage will just make the problem worse. And they cannot clean the garage because they don't have the time it would require and cannot afford the dumpster or the fees the city would impose. The little money they could have used was spent last month when Ted got ticketed for putting trash in the clubhouse dumpster.
The appliances in the kitchen are all on one circuit. Ted cannot microwave food and run the toaster at the same time. Nothing else can be used while the oven is on. The garbage disposal regularly trips the CGI behind the refrigerator. Ted has grown accustomed to these inconveniences. They simply don't run the disposal and the microwave is only allowed to be used in the evening. Ted is the second owner of the house and the family that owned it before him did a terrible job of wiring the kitchen when they remodeled. Ted certainly wouldn't have done it that way, but there is nothing he can do now, no matter how much it annoys him.
Ted has an enormous water spot on the living room ceiling. The guest bath is immediately above the spot. The spot it turns out, is from an overflowing bucket. The bucket is placed under the sink to catch the drips from the trap. The leaky trap was discovered when Ted was repairing a faucet. As Ted explains, "I wasn't in there fixing the trap. I was in there fixing the faucet. When I get around to it, I'll fix the trap. I told the kids to check that bucket, but they never do."
These are only a few examples, but I expect you have a clear picture of Ted and his home life.
Unacceptable, isn't it?
So why, then, do so many developers work like this?
We don't cull out old dead code. We comment it or leave it abandoned in directories. The argument for not getting rid of it is that it would take too long to figure it all out. Or what about that four-year-old test data that never got removed from the system? Or all those transaction records that are no longer needed? This stuff rots and stinks all over our system.
We know of a fundamental flaw in the application. Bad transaction scoping, for example. Or abuse of globals. Or any other obvious and painful flaw. But we learn to live with it. We actually adapt our behavior to the flaws in the system. I once worked with a team who lost momentum half-way through a version upgrade. Amazingly, when the differences between development and production became problematic, they accepted the inability to perform certain testing and figured out ways to get around compile issues. Meanwhile, they complained about the inconvenience they had to endure.
And the water-spot? How many times has someone on your team (maybe you) been in a piece of code doing some "surgical" work and then announced that they found another issue that will need to be fixed in the future?
Don't be like "Ted". You wouldn't live like this at home. Don't live like this at work.