Sign for Sheltering In Place

Sheltering Reduces Uncertainty

“Uncertainty and complexity produce anxiety we wish to escape”. – Al Pittampalli from How to Hold Meetings That Actually End With Decisions (Webinar June 8, 2017)

Much of the process of translating a user story or requirement into something that can be used is as much about managing and removing uncertainty as it is about technical transformation. Agile and legacy development (used in the broadest sense) are littered with techniques to help the team learn and to gather feedback. The techniques can be sorted into three categories:

  1. Forced Constraints (when reasonable) are useful in generating focus.  Common techniques in this category include time boxing (such as a sprint in Scrum or program increment in SAFe), breaking work into smaller components (story grooming) and defining a minimum viable product.  In each case, a constraint is introduced that forces a team to evaluate the set of solutions which often leads to a reduction in complexity and uncertainty.
  2. Experiments are set of techniques that allow teams to evaluate specific solutions on a small scale and use the outcomes to determine whether the solution is feasible.  In Agile and lean circles this is often evangelized with the slogan of “fail fast”. A/B testing is a form of experiment that is often used to test business to customer (B2C) interactions.  For example, A/B testing is commonly used to determine which headline will attract more attention on news sites. The results of the experiment allow the news site to deliver more value for their stakeholders (advertisers).  Another form of experimentation that has been used, since time immemorial, is prototyping. Prototyping is a mechanism to test a concept before a team or organization makes a larger commitment of resources. The use of experiments reduces uncertainty.
  3. Feedback an incredibly powerful tool for reducing uncertainty when actively generated and evaluated.  Techniques such as peer reviews, pair-programing, demonstrations, daily Scrum meetings, and testing are tools specifically designed to actively generate feedback. Passive techniques – such as asking for comments at the end of a blog entry – typically generate feedback more erratically than planned and active techniques, and are therefore less useful for reducing uncertainty.  Feedback generates information, which reduces what we don’t know (or exposes what is unknown) and therefore reduces uncertainty.

Many software development techniques are combinations of these strategies.  The ubiquitous sprint in Scrum is a forced constraint as teams are forced to get work done so they can receive feedback and then use that feedback to re-plan their course of action.

Uncertainty causes anxiety.  The Atlantic article, How Uncertainty Fuels Anxiety, states that everyone has a different level of tolerance to uncertainty (intolerance uncertainty scale).  Software development and maintenance often have a lot of uncertainty.  Nearly every day we are confronted with questions about issues and solutions.  Do we know how to solve a problem?  Do we have the skills to execute a solution?  Do we even know what the problem we are trying to solve is?  There are numerous techniques for reducing uncertainty which should be built into how work is performed.  How many are used for any piece of work is a function of an organization’s and team’s tolerance for uncertainty.