I've been working in the same software development department for a few years now. In that time, the average stay of a developer has been 6-9 months. A handful have been around for over 2 years, but the majority of our 20 or-so developers come and go at a relatively high rate.
As a result, the majority of our projects have become maintenance nightmares. Contractors will come in, code a few patch releases, and leave.
Our department has development guidelines (we do TDD) but they aren't enforced.
Recently, I've been pushing for our department to produce more maintainable code. I've been asking for mandatory code reviews and mandatory TDD. Management fully agrees with me... in theory.
In practice TDD always goes out the window. The justification is always that, in our domain, we need to deliver NOW.
I keep going on and on to colleagues that we're just digging a hole for ourselves, and that our current approach to software development is costing our department a lot of money... but it seems to fall on deaf ears.
What can I do to get my colleagues to see the value of code maintainability? How can I explain that short-term wins without a long-term vision is not sustainable?