What do you do when people keep doing the wrong thing? I see three general types of responses:
Those are in the order in which they should be applied. The problem is that item 3 is considered heresy by some people. It's such an awful heresy that sometimes when I bring it up publicly, I get soundly chastised for this. Sometimes I deserve it and it forces me to rethink my position. Sometimes I ignore the criticism and the people who use my solutions are happier for it. Data::XML::Variant is a case in point. I hope you never have to use that steaming pile of ones and zeroes, but if you are sending, say, IDIF feeds to Yahoo! in their pseudo-XML format, you're not going to get them to fix things and you know it, so option #3 is on the table.
Now I have a problem with our test suite at work. If we run the "fast" version of our tests, they take about 7 to 8 minutes. The regular version of our tests takes 35 to 45 minutes. Lately it seems that developers are running the fast version of our tests before merging branches to trunk and not running the slow tests. As you might expect, our trunk has broken a few times.
We use Hudson for an integration server, so we find out about this, so it's not the end of the world, but I'm trying to figure out how to solve this.
The "fast tests" have saved us so much time and agony that they're "making the wrong thing (not running all the tests) less wrong" and we get more work done, but how to get the developers to run the full test suite before merging to trunk? Once again I need to go back to step 1 (do the right thing) and then to step 2 (make it easy to do the right thing) before moving to step 3.
Welcome to the real world: sometimes it's not nirvana.