I was reading Steve Yegge’s post on how most software written today is crap and particularly his point about how rebooting is dying. It got me thinking about how easily we accept things that don’t work properly in the software world. “Let’s just reboot the machine and it will be fine”. “Let’s just restart the program and it will be ok”.

Well, let’s not. It’s bad. Or rather, since we’re all using loads of software other people have written and don’t have a choice, let’s at least try to make the software we can influence better.

I’ve found myself guilty of this in one form or other in many occasions. But it screams of bad design or bad implementation. An application or process that crashes and needs a restart means it got itself in an illegal state, or it’s leaking memory. A test suite that needs to be restarted from the top a couples of times in order to pass means it doesn’t clean up properly. Just like we wouldn’t tolerate a car that stops working and needs to be stopped and restarted, this should be unacceptable.

So I think we should get out of the habit of accepting restarting as normal procedure. Software development may be a relatively new trade, which might explain the existence and acceptance of such bad practices. But let’s try and get it out of our systems.