Domain knowledge is also really useful for spotting bugs. I recently worked on a project where I had very little domain knowledge. So anyway I wrote my code, ran my tests, crunched the data, double checked that all the results seemed reasonable, produced the pretty pictures and everything looked spot on. However once I started showing the results to a domain expert it took him 30 seconds to point to one of the outputs and go "that's impossible, you have a bug in your code". Sure enough I did. As a generalist the results looked fine to me (right size, seemingly reasonable relationship to surrounding values etc.), but to a domain expert the error stuck out like sore thumb.