I have been in the fortunate position of being able to teach some courses that I felt were lacking in my own postgraduate education. Dealing with computers and making credible causal claims in the resulting work takes up most of my research time; the skills for these activities are often just glanced over in statistics and econometrics courses. Consequently, I have been teaching courses aiming at increasing students’ software development skills and a course dedicated to the quest for identifying causal relations in economics and econometrics.
The pace at which computational power has increased has not led to a similar reduction of execution times for typical computations. Instead, the data and methods handled by academic economists have become ever more complex, which in turn means that verification of correctness can (and should!) not be checked by comparing the results to what we expected. (What did we expect, anyhow? Are we doing science or what?) Instead, we need to make sure that the programs we write are as correct and efficient as possible. Do we have reason to believe that this is the case?
A clear no from at least two angles. First, we largely rely on students learning how to program by osmosis, but the best evidence we have from other fields suggests that this is not working. Second, several top-published results in economics have shown to be wrong because of computational errors (here’s a short selection) — and the papers I am aware of were fairly simple (in terms of computational requirements, that is).
So why do people make errors? Well, we’re human and no robots. Our comparative advantage does not lie in repeating simple tasks a great number of times in exactly the same way. But that’s what you have to do when you, say, add another wave of your favourite panel data to your project and your tool chain involves a lot of copy & paste. And in zillions of other circumstances. The computer can be much better at these tasks and at others like tracking the history of your research project or checking whether small chunks of your code produce the same result each time. Teaching such things is what the Effective programming practices for economists course is all about.
We all learned how to manipulate formulas in grad school — but few models have analytic solutions and we need to translate others into something that the computer understands. I taught techniques for this in the Computational Econometrics course.