As a DBA, we are often asked to refresh a database, which means to overwrite an existing database using a different database's backup. If you are rarely asked to do this, you may decide to do it manually. If you are asked to do this on a regular and perhaps scheduled basis, then you'd want to automate it. Developers often want to write and debug code against a copy of the production database, so it makes sense to refresh their databases on a daily or weekly basis.
If you were to do the refresh manually, you would probably follow these steps more or less:
Copy the backup file
Restore the database
Unorphan the accounts if the SIDs aren't in sync
Provide db_owner or similar permissions to the development staff
Run a script for anything else not handled above
Here's how I have the refresh automated in a couple of my environments:
On Server1, a job exists that compresses the latest full backup
On Server2, there's a job that performs the following steps:
Copies the compressed file to a local drive
Decompresses the file to make the full backup available
Kills all sessions to the database that is about to be restored
Restores the database
Sets the recovery model to Simple
Grants db_owner privileges to the developers