Google's Thomas Limoncelli (author of Time Management for System Administrators) has an article in ACM Queue titled "A Plea to Software Vendors from Sysadmins—10 Do's and Don'ts". His list is:
- Do have a "silent install" option.
- Don't make the administrative interface a GUI.
- Do create an API so that the system can be remotely administered.
- Do have a configuration file that is an ASCII file, not a binary blob.
- Do include a clearly defined method to restore all user data, a single user's data, and individual items.
- Do instrument the system so that we can monitor more than just, "Is it up or down?"
- Do tell us about security issues.
- Do use the built-in system logging mechanism.
- Don't scribble all over the disk.
- Do publish documentation electronically on your Web site.
Every one of these applies equally to scientific software, big and small. We'll know we're teaching the right things, the right way, when people who have done this course know how to write software that obeys these rules and (more importantly) understands why they should.