Bugs are often characteristic of a bad interface between subsystems, which is frequently a result of inadequate communication among people when they design the subsystems. When a bug is found, there is a tendency to handle it within the subsystem and not look at the program as a whole.