Early in my career I worked on real time systems and many batch processes. One of the things that myself and others preached was the value of desk checking your program after it was compiled before you ran the program to see if it worked. I ran into huge resistance from most people. The temptation to try it and see if it worked was very compelling. I expect it is similar to the difficulty people have in editing and proofreading material they have written.
I have not written programs for a long time and I was wondering how practices have changed. I am checking with some of my friends, who are still doing development and who agreed with the importance of desk checking, to find out what is the current practices. Our experience at the time was a little time desk checking a program save hours and hours of testing.
I expect the resistance to desk checking is even more extreme now with the on-line aspect of development and the ability to run the program right after you have written it or even while you are writing it. I expect as a result bugs get buried in programs that only reveal themselves in obscure ways and then disappear. I remember way back in the dark ages of assembly language programming I had a program that would stop working for periods of time and then correct itself and carry on. I was perplexed for a long time. I discovered by accident the problem. I occasionally was overwriting a counter and instead of counting down from ten the counter was set at 64K. So the program would have to cycle thru 64K times before it reset the counter properly and start working again. I think with more careful desk checking I would have found that error. I wonder how many more things are lurking in programs.
Maybe having somebody else look at you program before you run it would help. Fresh eyes are always helpful. Trouble is you have to take you ego out of the mix.
I remember Fred Longstaff telling me many years ago that you can tell when a programmer is self-actualized by his comment when the program does not work. He says "What did I do now?", instead of "it worked before and I did not change a thing. It must be a bug in the ………." Everything will be blamed except the author. Sometimes the problem is with a support program but do not become defensive. Check your work first.
Anybody remember about "egoless programming?"
Any comments about desk checking?