I have been programming hard for the last week or so, trying to finish the software for the upcoming paper. Cutting it very close: we have 14 days to go and still have to run all of the experiments. The pressure is really on to get those experiments right: it would be silly…it would make us look silly if we bungled it in a big way. Even if we tried our best, we could still slip up in a subtle way. That would look less silly, but it would nonetheless be embarrassing. It would look bad for my reputation (among anyone who might read the paper and among my collaborators, past and present) if the results in the paper contain a mistake. Or perhaps it would look really bad if it contained a mistake even though we tried our best. What does that say about our “best”? But even the greatest researchers can make these kinds of mistakes. In the end, the only defense against this particular form of human weakness is sincerity and integrity.
I’ve been in this situation before, at least once for every paper I have produced. To be frank, I’ve been in this situation a couple of times without producing the final paper. In the past I have usually made all kinds of promises to myself. Next time I’ll begin earlier, and only publish after the work has had time to “mature”. Next time I’ll develop this software properly, with a nice structure and safeguards and lots of unit testing and proper documentation, etc. I must admit that this time it is going better than the last, and the next time the process will improve even further. Often I reach a kind of saturation point where I lose all faith in what I’m doing. Then I waste many hours wondering whether I should rewrite the whole thing from scratch. Once or twice I’ve done that, and a few other times I have started out rewriting and then gave up.
At the moment I’m still holding on to what I’ve written. I have to add that I have tried to write this program before (as an exercise), but had always given up. This last week’s effort is in fact the first time I have got it working. Perhaps that is the difference: for the other research I have written model checkers, something that I’ve done tens of times. Hmm.