> The key lesson is to never solve a problem on the same level it was created -- i.e., the symptoms. Take the time to think through the causality.
An example of how to illustrate the wrong behavior is -- for software devs -- something like a null pointer dereference. I've seen code reviews where the suggested fix is simply to guard the dereference to check if the pointer is non-null. Sure, sometimes that actually is the right fix. But a lot of time - maybe even most of the time - you need to to take a step back and ask yourself why it was null, whether it should have been and what else must change if it shouldn't have.