Senior leaders frustrated with the adoption of agile by their tech teams often reach out to me. The most common complaint I hear is, “I just want to know when it will be done. I used to get that – before agile. Why is there so much more uncertainty now?”
I have good and bad news. The good news is there is less uncertainty now than there used to be. The bad news is the uncertainty that exists is out in the open and must be dealt with, adding yet another thing to the unending list of things on their plates.
Forcing the uncertainty into the open isn’t all bad news. It comes with opportunities for those who are prepared. As long as uncertainty is hidden, there is no way to understand, identify, or resolve it. But now that it’s visible to everybody, there are ways to cope.
There are two reasons why the uncertainty feels different now: the first is how agile ways of working deal with uncertainty; the second is how previous ways of working did not.
Agility is pivotal in transforming the management of uncertainty in tech projects. Keep reading to learn practical ways of harnessing agility to improve effectiveness and project outcomes.
Mastering Uncertainty With Agility
The agile principles excel at managing and reducing uncertainty. Adopting them proactively brings uncertainties to light and reduces them, ensuring stakeholders are always in the loop to avoid surprises. This approach empowers teams to openly address uncertainties and promptly inform relevant parties. As a result, senior leaders gain a clearer understanding of existing uncertainties at the same time as their teams.
When teams confront uncertainty head-on, they can manage it more effectively. It might seem like uncertainty is increasing, but in reality, it's being steadily decreased and made more visible. This visibility can lead to a cognitive bias where we overestimate the prevalence of what we frequently encounter (known as availability bias).
Regular engagement with uncertainty can skew leaders' perceptions of its extent. Adjusting expectations with this understanding helps leaders appreciate the true impact of addressing uncertainty on work processes.
How Traditional Ways of Working Deal With Uncertainty
In software projects, uncertainty is a given. It's an ongoing creative process. This means constantly learning what customers want and figuring out how long things take. When we set the entire project's scope, budget, and timeline upfront, we don't leave room for these unknowns. This rigidity leads to problems, as leaders often see "we didn't know" as an excuse, discouraging open discussions about uncertainties.
This creates a false sense of control. Teams pretend to be certain to meet leaders' expectations, even though it's not true. Everyone plays along with this fiction, avoiding the real issues.
There’s another psychological effect in play that magnifies the impact of everything above—adopting agile methods, which are new and different, triggers discomfort due to our preference for the familiar. That often manifests in rose-tinted reflections on that past, where we romanticize what came before precisely because it contrasts with what’s happening now.
In reality, projects weren't always delivered on time, within budget, or fully scoped. It's easier to criticize new approaches than to honestly evaluate our past experiences.
At its core, software development is unpredictable. When leaders demand certainty from tech teams on sizeable projects, it highlights a lack of understanding about the inherent variability in this field. It also signals that acknowledging these uncertainties isn't acceptable. This puts teams in a tough spot, leading them to withhold the truth. As a result, everyone — the team, the leaders, and the business — suffers.
However, there are practical steps leaders can take to mitigate this uncertainty.
Don’t Ask Teams to Multitask
There’s something satisfying about multitasking. It encourages us to think we’re making the best use of our time, it keeps us challenged, and it feels like we’re making progress. Unfortunately, despite the satisfaction, multitasking is ineffective and inefficient. By its nature, multitasking means working simultaneously on multiple things, which slows down the first thing on the list.
Imagine you have three things to do. Each one will take a week to complete. Multitasking means that each task will be completed in weeks. Nobody will get what they want until three weeks have passed.
Single-tasking means that at the end of the first week, something is delivered. At least one person or team is happy. At the end of the second week, another thing is delivered, and another person is happy. At the end of the third week, everything has been delivered. Only one person has had to wait three weeks to get what they want.
In other words, single-tasking has effectively saved three weeks. Multitasking wastes time!
Help Teams Identify and Tackle Uncertainty
You can shift focus away from timelines by asking questions that help expose uncertainty. Instead of fixating on deadlines, ask questions that uncover uncertainties. For instance, inquire about their confidence in meeting a deadline: "How confident are you that this will be completed on time?" Then, probe deeper for a more cautious estimate: "What would your timeline be for a 95% certainty?" Lastly, identify the biggest uncertainties and discuss ways to reduce them.
Shift the focus from rigid timelines to managing the valuable yet variable aspects of the work.
Reward Openness
There’s a level of vulnerability required to admit ignorance. For teams to be able to learn from each other, they have to be willing to admit what they don’t know. In order for them to be comfortable telling you about their uncertainty (their areas of ignorance), they need to understand that ignorance is never punished. Admitting ignorance is the first step to learning.
The team should encourage people to work on things they don’t understand and pull skills and knowledge from those who understand them. When they share they don’t know something with you, thank them. When something goes wrong, treat it as an opportunity to learn and grow, not a time to blame. In every way, encourage people to be more open, trusting, and vulnerable.
Reinforce Knowledge Sharing and Collaboration
Uncertainty in software projects isn't just about the nature of the work; it's also about team dynamics. Often, critical knowledge is held by a single person, creating uncertainty around their availability. What happens if they fall ill or leave? Typically, those with the most knowledge not only get the most engaging work but also influence how other work is distributed to the team.
To combat this:
- Shift the focus from rewarding individual knowledge holders to encouraging knowledge sharing;
- Celebrate when crucial information is shared, like during brown bag sessions;
- Encourage team members to choose their own work and involve others as needed;
- Don't pressure teams into hurrying – when teams hurry, work tends to concentrate in a few already knowledgeable hands;
- Aim for teamwork, building and strengthening connections along the way.
Promote practices like pair and mob programming and collective problem-solving. Adjust promotion criteria to value teamwork, knowledge sharing, openness, and teaching. Every step towards this new approach will contribute to improving the overall process.
Encourage the Team to Involve Leadership
Encouraging your team to involve leadership is crucial. Often, teams hesitate to share bad news with leadership due to fear of adverse reactions. They might sugarcoat issues (i.e., create watermelon metrics) or hope they go unnoticed. However, reacting poorly to bad news only ensures you remain in the dark about real problems.
Reducing uncertainty means confronting it. It's vital for your team to feel comfortable sharing news about setbacks or changes, knowing they'll receive constructive support. And not just from you but from all leadership peers. And that you will constructively help them deal with it. This approach shouldn't just come from you but from all leadership peers. When working on customer-related projects, it's essential for software teams to collaborate with customer-facing teams, including their leaders. This involves openly discussing progress, challenges, and successes.
To achieve more predictable outcomes, leaders should focus on reducing uncertainty.
- Stop multitasking requests,
- Identify and address areas of uncertainty,
- Promote openness, knowledge sharing, and collaboration,
- Encourage your team to bring up issues to leadership.
While they might not know the exact delivery time for a project, ensuring they're working on the right things in the best way possible is key. If needed, leaders can step in to reduce scope, resolve conflicts, or hire more staff for long-term benefits. This approach leads to better relationships, results, and a happier, more effective team.
Embrace the power of agility in leadership. Subscribe to our newsletter for exclusive insights, cutting-edge strategies, and real-life stories on mastering agility from top technical leaders.