Whether we like it or not, RFPs (Request For Proposal) are a fact of life for vendors.
It usually works like this: A customer has a legitimate need for something. They decide (for whatever reason) to get bids from different vendors. They then craft an RFP document that is either:
- Carefully written, with the best intentions, so that they get the most detailed proposal possible given their requirements, or
- Carefully tailored by them and the help of their preferred vendor to box out the other vendors.
Both approaches have merit, even if #2 seems unethical and almost illegal. I understand that some people are just happy with what they have so they word their document to block anyone from changing their environment, turning the whole RFP process into an exercice in futility. I doubt that whatever I write here will change that kind of mindset.
However – I want to focus more on #1. The carefully written RFP that truly has the best intentions (and maybe some of it will rub off on the #2 “blocking” RFP type folks).
Here’s the major potential problem with the #1 approach:
You don’t know what you don’t know. For example, maybe you are not an expert on how caching works at a very low level, but you are aware of caching and what it does. So – you know that you don’t know about the low-level aspects of caching (or whatever other technology) and word your RFP so that you learn in detail how the various vendors do it.
The reality is – there are things whose existence you can’t even imagine – indeed, most things:
By crafting your RFP around things you are familiar with, you are potentially (and unintentionally) eliminating solutions that may do things that are entirely outside your past experiences.
Back to our caching example – suppose you are familiar with arrays that need a lot of write cache in order to work well for random writes, so you put in your storage RFP requirements about very specific minimum amounts of write cache.
That’s great and absolutely applicable to the vendors that write to disk the way you are familiar with.
But what if someone writes to disk entirely differently than what your experience dictates and doesn’t need large amounts of write cache to do random writes even better than what you’re familiar with? What if they use memory completely differently in general?
Another example where almost everyone gets it wrong is specifying performance requirements. Unless you truly understand the various parameters that a storage system needs in order to properly be sized for what you need, it’s almost guaranteed the requirements list will be incomplete. For example, specifying IOPS without an I/O size and read/write blend and latency and sequential vs random – at a minimum – will not be sufficient to size a storage system (there’s a lot more here in case you missed it).
By setting an arbitrary limit to something that doesn’t apply to certain technologies, you are unintentionally creating a Type #2 RFP document – and you are boxing out potentially better solutions, which is ultimately not good for your business. And by not providing enough information, you are unintentionally making it almost impossible for the solution providers to properly craft something for you.
So what to do to avoid these RFP pitfalls?
Craft your RFP by asking questions about solving the business problem, not by trying to specify how the vendor should solve the business problem.
For example: Say something like this about space savings:
“Describe what, if any, technologies exist within the gizmo you’re proposing that will result in the reduction of overall data space consumption. In addition, describe what types of data and what protocols such technologies can work with, when they should be avoided, and what, if any, performance implications exist. Be specific.”
Instead of this:
“We need the gizmo to have deduplication that works this way with this block size plus compression that uses this algorithm but not that other one“.
Or, say something like this about reliability:
“Describe the technologies employed to provide resiliency of data, including protection from various errors, like lost or misplaced writes”.
“The system needs to have RAID10 disk with battery-backed write cache”.
It’s not easy. Most of us try to solve the problem and have at least some idea of how we think it should be solved. Just try to avoid that instinct while writing the RFP…