It seems to me like a lot of time, effort, and money is spent on what-if scenarios. I am always amazed at how much drama and complexity people create for themselves. Some examples from my life, with the answers I usually give:
Q: What if a customer wants to do something that we don’t want them to do?
A: Simple: don’t let them. You could also write them a note about why you don’t want them to do that (risks, not much financial sense, etc.) and let them do whatever they want. You can’t babysit everybody, and as long as their bad decision isn’t going to take you out with them you’re fine.
Q: What if we decide later to do something different with our systems?
A: You’re always going to want to do something different, as you learn more about what you’re doing. Until you know what you want to do you aren’t going to be able to plan for it, so stop trying. If you want to spend time future-proofing your systems think about easy ways to add flexibility so that changes can happen easily. Adding abstraction is usually a good place to start, such as by using DNS service names instead of specific host names or IP addresses. Or maybe look into sharding your database to make it more scalable. If you do this stuff now it’ll be easy to add capacity later.
Q: We need to have a ton of extra capacity; what if someone comes in with a huge request and we can’t fill it right away?
A: Did you promise that you would be able to fill it right away? If not, send them a note saying “you’re request is big, we’re going to add capacity for you but it’ll take a couple of weeks” and see what they think. Have a conversation with them.
Q: What if someone wants a terabyte of storage on their VM? Is that possible?
A: Does someone actually want a terabyte of storage on their VM right now? No? When they do have them come talk to me and we’ll figure out how best to do that for them.
Unless you can see the future stick to solving problems you know about. Ask yourself how likely the what-if’s really are. Last, spend your time adding abstraction and flexibility so that when you do find a problem later it’s relatively easy to fix.
Excellent post, I am emailing this one around to the rest of my sysadmin team at work. 🙂
Cheers.