There's an unfortunate and rather rude saying about assumptions that I've found popular among IT folks I've worked with. I say unfortunate because, to me, assumptions that are recognized early and handled the right way are a key to successful projects. Technical players who use assumptions well can help set projects on the right path long before they go astray.
Sometimes on waterfall and hybrid projects technical players are asked to estimate work early, before requirements are complete. My instinctive reaction is not to provide an ungrounded estimate, but that's not helpful. The way to handle this uncomfortable uncertainty is to fill out the unknowns with assumptions: detailed, realistic statements that provide grounding for your estimate.
Assumptions enable the technical team to lead the project in two ways:
- Assumptions from early estimates should transfer directly to the risk list, and via the risk/issue process the team should define contingency measures if assumptions don't hold.
- Assumptions provide a punch list for the requirements team by identifying what developers need to know in order to get the work done.
As you apply this technique, be aware that it will create its own challenges (that in my view are well worth it):
- If a PM or business customer isn't used to seeing a plan couched in assumptions, then presenting it that way can require significant expectations management work
- Because "you don't know what you don't know", even best efforts at defining assumptions can leave out important details that emerge as surprises during development and test
- Teams become accustomed to defining requirements during development and testing, so defining them can be a cultural shift
On that last point, you might say that an Agile project doesn't need the requirements to be specified up front. I agree. However, there are still many waterfall and hybrid efforts that set goals — and request developer estimates — up front. Until we're all working on Agile projects assumptions will be an important way for technical players to lead the team to detailed, well grounded solutions.