Once Raspberry Pi projects move from prototype to unattended deployment, process supervision matters more than application code.
My standard unit files include explicit dependencies, restart backoff, and environment files for configuration. I avoid hardcoding paths and credentials directly in unit definitions.
Timer units are useful for periodic maintenance tasks like backups, cleanup, and health probes. They are easier to audit than ad-hoc cron scripts spread across machines.
With journal persistence enabled, debugging startup issues is straightforward. Service logs, exit codes, and restart counters are all in one place.