GOTO notes: Embracing Uncertainty

04/27/13

GOTO notes: Embracing Uncertainty

Embracing Uncertainty
Dan North

Patterns - it’s a language/vocabulary, so it has a name.
    - it has a context.

We’re not trying to be productive, we’re trying to be effective.
In software, we want to produce the least amount of code/software that will solve the problem.

Fear -> Risk -> Process -> Hate

Risk is multidimensional. For instance, Likelihood and Impact.
Likelihood is probability - number from 0.0 to 1.0.
Impact goes to infinity (disaster).
Agile - what if we could minimize impact? Testing, CI, etc.
Another axis - Context/Stakeholder (security, regulatory, etc.)

We’re not following the Agile Manifesto.
BDD frameworks are tools.
Executable specifications are documentation.

We crave certainty! Faith becomes religion.
Complex questions become simplistic answers. In a Zen koan, the point is to struggle with the QUESTION.
Interpretation becomes dogma.
We would rather be wrong than uncertain.

We resist uncertainty of scope, technology, effort, & structure.
Proven methodologies, officially sanctioned frameworks, etc.
We’d rather have precision, even if it’s completely inaccurate.

The Hourglass: A model of change (Seth Thompson)

You are probably in Stage 2.

Three Ages: A model of growth

  1. Explore - I wonder if this will work?
    Optimized for maximizing discovery (learning)
  2. Stabilize - In order to share the idea
    Optimized to minimize variance (consistency)
  3. Commoditize
    Optimized to maximize efficiency (minimize cost)

These are not phases; each may apply to an aspect of my project.
Agile methods optimize for the Second Age.
As such, they are systemically resisting discovery.
It does take us out of chaos into something that we can reason about.

Side note - you can’t get good at estimating.

Real Options (Matz, etc.)
Option - the right, but not the obligation, to trade something in the future.
Insurance (betting against yourself)
Apply this to every decision.

Options have value
Options expire
Commit deliberately

“Never commit early unless you know why”

Deliberate discovery
You will discover stuff as you go through a project (accidental discovery); the sound of that is “Oh crap.” They occur far too late for you to do anything.
Ignorance is your biggest constraint.
You are second order ignorant (you don’t know that you don’t know).
Ignorance is multivariate and disjoint.
Some unexpected bad things will happen. (Non-zero.) (We plan like there will be zero.) (These are things that are not on the risk log.)

Embracing uncertainty of:
Scope - explore, do things deliberately
Technology - learn, try another language/paradigm - options
Effort - get it in front of people very early on, bring the risk forward
Structure - fluid teams/organizations (specialists/enablers who consult with teams and help them!)

Expect the unexpectable.
Anticipate ignorance. (Can you increase the likelihood of serendipity within your organization? What if someone on another team has already solved your issue? How can you find out about that?)


Your Host: webmaster@truewill.net
Copyright © 2000-2013 by William Sorensen. All rights reserved.