There are lots of questions on SO asking about the pros and cons of virtualization for both development and testing.
My question is subtly different - in a world in which virtualization is commonplace, what are the things a programmer should consider when it comes to writing software that may be deployed into a virtualized environment? Some of my initial thoughts are:
- Detecting if another instance of your application is running
- Communicating with hardware (physical/virtual)
- Resource throttling (app written for multi-core CPU running on single-CPU VM)
Anything else?