In Business software is Messy and Ugly, Robert Martin writes:
“One of the developers asked the question point blank: ‘What do you do when your managers tell you to make a mess?’ I responded: ‘You don‘t take it. Behave like a doctor who‘s hospital administrator has just told him that hand-washing is too expensive, and he should stop doing it.’
I’ve seen this problem time and again. Organizations get addicted to “going for it”, taking hideous short-cuts, and letting testing, refactoring, and overall code base hygiene slip while pursuing some short-term goal, leaving the developers stuck in a tar pit. And it always seems to surprise everyone that the tar pit is so bloody difficult to get out of, except perhaps the few developers who’ve lived the story before. Some developers get out by simply walking away.
The few teams I’ve seen avoid this tar pit have set, and self-enforced, an internal standard for what “done” means, and have quietly ignored attempts by management to force the team into taking shortcuts unless there’s a clearly explained, compelling business goal that the team is willing to sign up for.