Years ago I wrote signal processing software for a speech recognition project. My code did fairly sophisticated spectral estimation, which then feed into powerful statistical learning software.<p>It became clear that one had to be really careful. If the front end software had quite serious bugs, the back end was powerful enough to learn to recognize mangled speech, thus hiding the bugs. One could continue with ones research, vaguely puzzled as to why ones results were disappointing. One could continue to do research and improve the performance of the system without realising that it was all pointless; everything would have to be redone once the bugs were discovered.