I'm beginning to work on my first WordPress blog, however I've noticed most tutorials just have you do modifications (such as theme changes, installing plugins) on the production site. This worries me for a few reasons:
No backups
No version control
If you make a mistake, your production site is affected
Developing remotely is slower than local development, especially when tweaking css files.
I understand why WordPress works like this - it allows people with no development experience to manage their WordPress installation (or the one provided by their service provider). It also allows you to work on the WordPress installation without having ssh access to the server. However as I am confortable working with tools like git and ssh, and am using a virtual server for the blog, this isn't very important to me.
So I was wondering what techniques experienced developers use when working on a WordPress blog. For example:
Do you develop locally, then push the changes to the live site? How do you do this?
How do you manage database changes and backups?
What do you store under version control (if anything)?
If a plugin changes the database, do you somehow track the changes it does in version control, so you can rollback the changes done by the plugin if you need to?
Or maybe I'm just overcomplicating everything if working on the production site isn't as risky as I am thinking it would be. I would appreciate any answers either way.