I have been helping a friend learn how to program. He asks some pretty good questions sometimes. Each week, it seems like his questions get better and tougher.
Last week, he observed that he needs to restart his development environment occasionally or sometimes he may even need to restart his computer. He asked if I have ever experienced this.
I had to laugh, because there are some days, where it seems like I spend the whole day nuking my dev environment and restarting stuff. It has nothing to do with the quality of the tools or operating system that I am using. I’ve just accepted that software development is a destructive process, and I explained this to him.
Think about this: How many programs do you use that have errors in them (not including the ones written by you)? Probably several have small errors, and occasionally you will even notice them. Occasionally, they will even crash while you are right in the middle of something, but that is probably a relatively rare occurrence.
In contrast, think of what a developer does. I don’t think I would be exaggerating if I said that developers seem to cause every kind of error that is imaginable (and maybe some that are unimaginable). They do this over and over again, all-day-long, for hours and days and weeks. Imagine if your favorite programs randomly caused every imaginable error and did so, consistently all day long. Would you actually be surprised if this relentless abuse resulted in you having to reboot your machine occasionally? I would be surprised if you didn’t.
That is the nature of programming. A thousand failed attempts to do something, followed by a final compile and then, b-bye program. As soon as the errors stop (or become rare enough), you stop running that nice, safe, stable program and then begin work on a new error-maker.
Of course, there are lunatics out there who actually do some development or testing on their production machines. If you really hate your prod server and want to crash it, just go ahead and give this madness a try. I’m sure somebody has a good backup and can fix whatever you manage to screw-up. What’s the worst that could happen, right? (If don’t see any problem with these last two statements, please put-on a straightjacket before you go to work, from now on. Thank you.)
So, if you are a programmer: next time your program or computer crashes, take a moment to acknowledge the abuse that you are putting your computer through. Maybe we are lucky that your machine runs at all.