Mitigating risk and optimization is critical in project management. It is necessary to have a plan to control the unknowns.
How do you control the unknowns? Yes, they are difficult the control in the beginning, but this process can be improved with time and data.
First of all, there are known unknowns and unknown unknowns. The known unknowns are issues that you know could cause issues. For example, if our systems are getting upgraded tomorrow, there may or may not be an issue leading to more downtime than expected. The unknown unknowns are issues that arise that you haven’t even thought of. For example, hardware failure on your development machine could be an unknown unknown.
Known unknowns are much better than unknown unknowns. Mitigated risks are much better than known unknowns. We need to account for as many [realistic] unknown unknowns as possible and mitigate any and all risks associated with them.
This is why planning is extremely important in Agile teams. Make sure you allocate time to keep track of the unplanned activities, unknown unknowns that occurred, and the level of impact of the known unknowns. As more data is collected, have them accessible for future use.
Padding time is a no-no, but if it might be ok when we start calculating the risks. I’m sure there’s some equation for risk mitigation that uses something like the expected value in statistics. I’ve worked for projects that used metrics of anywhere between 50%-75% utilization of actual available development time. This number shouldn’t be random, it should be carefully calculated and adjusted as the project progresses.
When the unknowns do occur, shelter as many people as possible from these risks, so the schedule is minimally impacted.