I often reduce how I classify the importance of bug reports I get that I can't reproduce. It's often not efficient to work on something with so little information to go on. Further information on the bug or a reproducible error case vastly help.
Then the engineering team never gets to fix the problem, and your support team starts eating up all the resources because they get constant calls from the customers asking about the same problems.
(thankful for not being in that job anymore!)
1 0 * * * kill -HUP $(cat /var/run/my_server.pid) >> /var/log/my_server/error.log
You think I've kidding but I've done this in production. Now I'm more likely to use god/monit.In fact, not joking at all: this is how I make Finder not slow down. Every 4 hours, I restart it via crontab.
Even though I agree with this, there is a fundamental difference between computer science and software engineering, and in actual software engineering there will often be hacks, and bad state. Even if sometimes it's not yours, but a library you're using.
I agree with you, but this article deals with a more "real life, pragmatic" approach, versus your thesis which is true, but a little more idealistic
Any company that expects its developers to take pride in their work should track crashes and strive to produce software that doesn't routinely need to be restarted.
The reason power cycling is such a useful tool is that most computer systems are running in an environment where the things outside of it's control way outnumber the things within it's control.
There's so many examples I could provide: you are a software engineer, the program you develop works well for a day and then crashes. You can either investigate the problem, find there's a memory leak and fix it or Power Cycle your program.
-> If you design a product, don't go for the easy stuff, don't power cycle just to get back to a well known scenario. Investigate and fix.