https://doi.org/10.1016/j.euromechsol.2022.104845
@jedbrown
Agreed. The paper is not for us, it is too late, but I will recommend it to students. Fixing the error is not usually a problem; finding where it is the most difficult.
Also, you are right that creating codes have certain ways of doing things. Codes should be designed to make funding errors easy. You should be able to dissect code and test bits independently. Productivity is as important as efficiency, if not more, especially in research codes. But you know that very well.
@jedbrown That is tricky; how should we teach this? Some stuff you can learn in combat.
Teaching someone coding computational mechanics, you should start with the question, how would you test code? Not the whole thing, but parts, e.g. conformity of approximation, approximation, integration scheme, matrix sparsity, etc. That will make a fundamental imprint on the design.
Being a bit extremist, if you have to look for symptoms, that is an indication problem with the behind, i.e. design.