Writing software that is workflow-friendly
Support error codes properly
Support command line options
Support -o/--output
and/or --output-directory
Support command-line configurability
i.e. don't require config files, or if you do, allow override via command line.
Use stdout and stderr consistently
Don't have side effects outside the directory etc
operate entirely within directories specified