By special request, another story from way, way back.
In the early days of NuMega, our UI work was done by a guy (Bill) who worked remotely. When the UI launched the target process, it was responsible for initializing a data structure used by my runtime code.
One day while looking at a bug, I discovered that the UI wasn’t setting the values consistently. I wrote to Bill, assigned the bug to him, and thought that was the end of it. In the next day’s build, Bill claimed the bug was fixed. It turned out not to be, and the bug was re assigned to me. After yet more debugging, I discovered the UI still wasn’t doing what it was supposed to.
This cycle continued on for quite awhile. Finally I got proactive and wrote sanity checks for the UI’s settings into my code. If they were wrong, I emitted a big text mode “banner” to our diagnostic window, complete with “*******” lines. The banner’s header was something to the effect of “Matt’s Huge Irritating Banner”.
After this, Bill *still* hadn’t fixed the UI settings code. Everyone on the team began expecting to see my banner as a sign of a normal run. The QA lead begged me to take it out, but there’s no way I was going to take out code that pointed the finger at someone else.
Ultimately, the issue came to a head, and I went back to my sanity checking code. Turns out that there had been a flaw which caused my banner code to be emitted long after Bill had fixed his code. It’s taken 10 years, but “Sorry Bill!”
That said, I do think a separate “sanity checking” tool is a good thing. Years later, another product I worked on constantly got bug reports about simply not working. Starting this product successfully required an immense amount of configuration to be set just right. In the words of another developer, “it’s roughly as complicated as a shuttle launch.”
I finally got sick of debugging these issues, only to find out that the system wasn’t set up correctly. To save my sanity, I wrote a triage program that quickly checked everything I could possibly think of. This tool ended up saving a lot of time, not only for engineering, but also for our QA and tech support folks.