I always feel like a responsible adult and global citizen when I go camping or hiking and follow the rule on "leaving no trace". So why do we not do the same thing as engineers? As a camper, I spend time setting up my tent and sleeping bags, organize my picnic table and fire pit area, and enjoy using the whole campsite. But when the weekend is over and it’s time to leave, everything gets packed up nice and neat. I make sure there’s no garbage laying around and that the fire isn’t still smoldering. If it’s been raining, it sometimes takes as long to pack up and keep things clean as it does to set things up. But it's worth it to know that I left the campsite in the same condition that I got it.
As an engineer, it takes time to set up our environments. We have to think about what we need it for and if we need one box or multiple boxes (nowadays, even though we call them “boxes” or “servers”, they really are VMs “virtual machines” and are usually "in the cloud”). We install all the needed components and image or take a snapshot of the VMs whenever it’s appropriate. We do development and testing on our new environments throughout the sprint. Then the sprint is over, we swing into planning for the next one, and repeat this over and over again. This works well when we continue to use the same VMs. However eventually, we may forget about all the VMs we created as we move into new sprints, start developing new features, or even as we move to new project teams. Only on rare occasions does someone think about cleaning up their environments. And that doesn’t mean just removing the older version of the code and replacing it with newer features, I mean actually decommissioning the whole environment. It’s so easy nowadays to roll out new environments that this should be a very dynamic landscape with new environments popping up all the time and older ones getting shut down just as quickly. You don’t need to secure a bunch of servers in the cloud. You won’t lose them (unless of course you secure a bunch of servers and over time forget what you have). The cloud makes things scalable so hoarding isn’t a feasible option and is totally unnecessary.
Why don’t we treat our engineering environments like campsites? When you are done with your sprint, or project, or job, you spend some time cleaning it up and removing any trace that you were there. Leave the cloud (or your data center) in good shape for the next camper.
Leaving these remnant VMs around costs money in some form whether its power and cooling or a staff of people to support them. The cost is real. If you aren’t ready to delete your environments, consider turning them off when you aren’t at work. For us old-timers, turning off VMs just isn’t something we ever considered. And unlike the days when booting a server would take a lot of time or when the only reason you ever had an environment was to run automation through the night, now people are using VMs in the cloud as their “desktop workstations”. So similar to turning off the lights when you leave a room, turn off your VMs when you go home. Be a responsible global citizen and save some power and some cost by thinking about the environments you have and delete or turn them off when you can.
Clean up your campsite and don’t let your campfire smolder.