In my first position, where I was the EE, the software development was done with a combination of an emulator, a VAX build system[1], and live hardware via JTAG.
In my second position I was doing signal processing algorithm R&D, so there was no production system at all.
In my third position I was implementing stuff from the second position and other sources. Our software was (supposedly) platform-agnostic, so we did our development in RHEL and ran on various platforms with various flavors of Linux. There we had examples of real hardware, but had not constructed a full-example production system when I left. All the Linux installs on target hardware were heavily stripped down and configured for real-time operation, though, so we couldn't actually do development on them.
Now I'm doing a combination of R&D, packaged software, and bespoke software for NLP where our customers can run (theoretically) on whatever systems they want. I develop in Ubuntu LTS and test occasionally in a Windows 7 VM. Our customers so far run our software on various flavors of Windows, RHEL, or Ubuntu VMs that we package for them. We don't really have a defined "production system".
Assuming you have a production environment, and that said environment is running a full OS. Not everyone is a web or mobile developer.