Embracing Uncertainty in Software Projects
A seemingly simple question that can become a project management nightmare to manage.
If you don’t give an answer, you’re viewed as incompetent and unable to estimate. (How could you NOT know? After all, you’re the project manager!) If you give a qualified answer, you risk being held to that original date despite the need to analyze requirements further, discuss with vendors and do proper project planning.
If you’re right and the project delivers on time, you’ll be heralded as a “someone who can deliver.” If you’re wrong, you’ll be regarded as “someone who can’t deliver.” The reality is you’re only as good as your last project and achieving a project date given months in advance is based on leadership, a drive for results, successfully managing expectations and let’s face it—luck!
Instead of relying on luck to deliver our projects, we need to change the way we communicate a project’s launch date and overall project costs.
In over 20 years of working in the software industry, the only thing I am certain about is uncertainty. No two projects are ever the same. Even if you manage similar projects, the requirements vary, the people and stakeholder needs change, the technology platforms adjust and the business has different priorities and project constraints. Due to these ever changing factors, software projects are full of uncertainty.
Good project managers will put risk management, change control and communication plans in place to manage scope and balance uncertainty. However, even better project managers look to embrace change and uncertainty while planning for it! One of the reason’s Agile software management practices have been so popular is they help teams embrace uncertainty.
The Cone of Uncertainty has been around since the 1950s but is popular among Agile teams to explain why a project’s effort and scope could be either 4 times or ¼ the size of the original estimate. Over time, the estimation variability decreases as the project team understand more about the requirements and the actual effort to deliver the project.
How to Embrace Uncertainty in Software Projects
Project teams can help embrace uncertainty by applying several approaches, including:
1. Embrace rolling planning and incremental funding.
Rolling planning helps project teams and customers refine estimates and make better decisions across the project lifecycle. Instead of funding an entire project, fund an Analysis phase or fund a few sprints to develop a valid proof of concept. Once the analysis or the proof of concept is completed, the team will have better estimates and can refine the project dates and the project costs.
This approach impacts traditional financial processes and budgeting as stakeholders need to request a budget first but can’t commit upfront to the end date and final deliverables. Transparency, incremental delivery and upfront communication on project unknowns is critical to clearing this hurdle.
2. Use ranged estimation versus single point estimates.
The LiquidPlanner blog has several articles highlighting the benefits of ranged estimates vs. single point estimates. Team members will find it easier to provide a high and low estimate vs. a single point estimate as it gives them some wiggle room for unknowns. As the task progresses, the same ranged estimate for remaining work is provided.
The team can speak to status using these ranges and over time they will have greater confidence in a project’s expected finish date. Knowing a tool like LiquidPlanner provides this level of estimation at the project and task level is very helpful in clarifying uncertainty.
3. Deliver highest value features first.
Another Agile concept to manage the Cone of Uncertainty is to deliver higher value features first. In a past Kronos timekeeping implementation for a manufacturing organization, my team focused on delivering the core timekeeping features early in the project before moving on to the workforce management features. The plant wanted the plant floor workforce management features but there were a lot of union specific rules that needed to be sorted out before the package could be configured (i.e. uncertainty).
By delivering the timekeeping features first, we met a critical business need. The labor rules were so convoluted that the workforce management features were never implemented. Focusing on the features that provided the greatest return improved the project satisfaction. Worrying about a resource indicator that would never be activated due to business and technology issues was non-value add.
4. Communicate the unknowns early.
Successful project management is based on trust, collaboration and frequent communication on the project health. By communicating the unknowns early and providing options to address uncertainty, both stakeholders have an equal opportunity to manage the risk affecting project timelines and deliverables. The problems start when the client and the delivery team fail to maintain trust and communication.
Project teams will always have challenges managing the project triangle of scope, cost and time. At the start of a project, uncertainty is at its largest and teams need to avoid making promises they can’t keep. A better approach is to work incrementally, provide frequent feedback and use effective tools to help forecast end dates based on actual data instead of emotion.
Uncertainty will always exist. The best approach is to embrace it rather than ignore it.
Managing projects is hard work. You need to have a wide range of knowledge and skills—from tracking schedules and satisfying stakeholders to juggling people and technical skills. This eBook, How to Solve the Top 9 Project Management Challenges, provides practical tips and solutions to common project management challenges. You’ll also see how LiquidPlanner helps you meet your challenges—and turn them into opportunities!