In software engineering (I'm speaking only as someone who writes software as-needed and has friends in professional software development, not as an expert myself), one of the problems is that an engineer or analyst will believe they have solved a particular software problem prematurely. Just because their code compiles and gives the result they expected on the simple inputs they can think of off the top of their head doesn't mean it is ready to be shipped to the customer. For that, one needs to design suites of tests that check at various levels of resolution for bugs and mistakes in a systematic way. You need to have a game plan for designing these tests long before you finish writing the code, and you need to ruthlessly apply the standards of the tests across the board to your finished products.
In many places (academia is a large one, government labs is another I have worked in) this sort of unit testing is just ignored. Analysts write software until they personally feel like it's done. One other human being might scan their eyes over it before it is declared "check in ready" and is being used to tell Air Force policy experts how to interpret radar results. I think we should all understand that this is really bad and happens many thousands of times every single day. I can't tell you how many times I have discovered bugs in academic software, upon which award-winning research papers were based. Rarely do journals require you to submit the code and often you only have to "describe your algorithms mathematically" in the papers, and a ton of important subjective choices that some researcher made when analyzing the data get lost in translation.
I'm merely drawing a comparison between this and Bayesian data analysis. A lot of researchers tend to automatically believe their analysis is unassailably "rational" just because they had the foresight to use Bayesian methods rather than standard hypothesis testing. But this isn't so. Extremely implausible prior distributions can to a large extent be detected. Independence assumptions in the model can also be checked by bootstrapping useful test statistics from the posterior. These are simple things that almost everyone should be doing in a regular, ruthlessly systematic way any time they want to declare a statistical success in their research.
As far as I'm concerned, model checking and unit testing are the "hygiene" of computational research.
However, there is one important difference between the software world and the statistical modelling world. While it is sometimes possible to produce a "bug-free" piece of software, it is never possible to formulate a statistical model that captures reality exactly; as Box said, "all models are wrong." The challenge in statistical modelling is to find a model which is the best trade off between convenience (conceptual, mathematical, or computational) and verisimilitude. "Model checking" of some form or another is essential to ...
Andrew Gelman recently linked a new article entitled "Induction and Deduction in Bayesian Data Analysis." At his blog, he also described some of the comments made by reviewers and his rebuttle/discussion to those comments. It is interesting that he departs significantly from the common induction-based view of Bayesian approaches. As a practitioner myself, I am happiest about the discussion on model checking -- something one can definitely do in the Bayesian framework but which almost no one does. Model checking is to Bayesian data analysis as unit testing is to software engineering.
Added 03/11/12
Gelman has a new blog post today discussing another reaction to his paper and giving some additional details. Notably: