Earlier quoted context omitted.
The other part of not reusing code is that you tend to be pretty casual about edge cases/testing. If I know the params will be valid and the data set well formed (I made them) then I don't need to write 100 lines of checking. My test is two simple test runs, did they give me the answer I expected? Yes! Winner. Set off long running job and go home
This is precisely the difference from regular programming: Our code is typically going to be used by a very small number of people, and the inputs are typically very well constrained. It's typically faster to just call up the new prospective user and explain the code than to triple your development time making it rock solid. For instance, I'm currently working on a project where I have to process 110 GB/s of radio da…
Programs are mathematical proofs. If the mathematical proofs are a weak link in a scientific work, then this is a serious problem.