No Broken Windows
I had to deal with a change request today. The customer wanted to be able to manually enter /edit data into administration tables that are supposed to be handled using batch processes only. What he wanted was really simple, and could probably be handled using a grid + edit + paging in half an hour to an hour.
I refused to build it that way. The customer is probably the best I have had so far, but no one access my database but my application. That includes the admin module as well. The reasoning is a little more than extreme reluctance about the database structure, it is also a deep aversion of having a foreign body in my application. All the application works in a certain way, I am not willing to change that, even for such a "simple" request.
So I spent a few hours today and built an interface that match the rest of the application, that is usable and pleasant to the eye, that is actually thinking about the user . It took about four hours vs the 1/2 - 1 hours that the simple approach would take. The complete version required stuff like: resource files, two level validation, transactions, DB constraints, MVC, etc. The end result, however, is something that I am proud of, something that would not taint the application with "just a quick hack" mentality.
This is an application that I am proud of, and I refuse to not be proud of any and all parts that are under my control.
The mentality here is that the second that you allow a "quick hack" into the application, it spreads. I have seen it happen in projects were toward the end of the project it started to sprout all sorts of "interesting" ways to solve a problem because "it is simply this or that", which has led to total and complete chaos down the road.
Do not allow broken windows in your application.