Skip to main content

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.

Industry Insight

Industry Insight

Years ago, I worked with a team that was implementing a significant change to their software. The uncertainty around implementation methods and timelines was evident. Facing an uncertain finish date was challenging for the business. To tackle this, we refined our approach.

 

For each story, we sought maximum clarity and kept stories small, limiting them to two-day durations. But sometimes, no matter how we sliced it, some work came out more extensive than we thought reasonable. Whenever a story seemed unreasonably large, it indicated excessive uncertainty.

 

Our strategy involved creating new stories focused on understanding these unknowns and associated risks. Investing two days in risk comprehension often led to efficiently completing the original story, generating new, informed stories, or revising our strategy based on new insights. Working this way allowed us to continually find, address, and reduce uncertainty.

 

Initially, progress was slow due to many unknowns, but as we resolved uncertainties, our pace accelerated, exceeding expectations while maintaining customer satisfaction and high quality. We weren’t surprised by unknowns at the end of the project because we’d been actively seeking them out and addressing them as we went.

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.

Discover how to deliver better software and systems in rapidly scaling environments.

Discover how to deliver better software and systems in rapidly scaling environments.

  • By submitting this form you agree to receive our newsletter and occasional emails related to the CTO. You can unsubscribe at anytime. For more details, review our Privacy Policy. We're protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
  • This field is for validation purposes and should be left unchanged.

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.

headshot of Noah Cantor

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!

multitasking vs single tasking example photo

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.

Noah Cantor

Noah Cantor is an experienced tech leadership coach, tech leader, and people leader. He works with tech leaders facing demotivated staff, teams that struggle to deliver, and significant technical debt. He helps them address their feelings of being overwhelmed, stressed, and out of their depth. He makes organizations more amazing places to work, reducing staff turnover and absences, freeing time for leaders to tackle strategy, and helping them show up with clarity, authenticity, and purpose.