Two Wrongs

Mind the Gap When Learning

Mind the Gap When Learning

Software product development is – much like any product development – about creating usable knowledge. That’s the main value a developer delivers. Going into the details of this is probably a separate article – or an entire book!1 Lean Product and Process Development; Ward & Sobek; Lean Enterprises Institute; 2014.

The main point of this article is that if you want to learn more effectively, work in smaller increments.

Inefficiencies between Shewhart cycle steps

There are many models for knowledge acquisition: your lamdas, oodas, etc. I like the Shewhart cycle2 Also known under many other names, e.g. the Deming cycle, pdsa, or pdca, depending on who you ask., so that’s the one I’ll talk about here. But it doesn’t matter which one you prefer; most of these models are basically the same thing3 Except for ooda which is weird in a way I don’t understand and nobody has been able to adequaty explain to me. But then again, I have only myself to blame for not yet reading Boyd. Maybe it would be obvious if I did!: a way to operationalise the scientific method.

In somewhat graphic form4 I couldn’t get graphviz to produce the visual effect I wanted for later stages of this, hence the un-pretty Unicode art., the Shewhart cycle looks like

PLAN   ——————————————⮞ DO
 ⮝
 |                     |
 |                     |
 |                     |
 |                     |
 |                     |
 |                     |
                       ⮟
ACT ⮜—————————————   STUDY

The steps are, repeating over and over,

  1. plan: Based on our most current knowledge, we make a plan.
  2. do: We execute on that plan.
  3. study: We study the outcome.
  4. act: We condense the results of study into new knowledge.

I skimmed Dave Farleys Economies of Speed presentation5 Economies of Speed; Farley; GOTO 2022. Available online. and learned a neat extension to that model. Between the steps in the cycle, there are gaps, which we can represent as angry triangles:

              /^\
  PLAN   ————/ ! \————⮞ DO
   ⮝       /______\
   |                     |
  /^\                   /^\
 / ! \                 / ! \
/_____\               /_____\
   |                     |
   |                     |
            /^\          ⮟
  ACT ⮜————/ ! \————   STUDY
          /_____\
  1. plan–do gap: The plan is never executed to the letter, meaning what we actually do might be different from what we had planned.
  2. do–study gap: The outcome is hard to isolate from other effects, meaning what we study may not be exactly the outcome of what we did.
  3. study–act gap: The conclusions we draw from observations are not always correct, meaning we record falsehoods as knowledge.
  4. act–plan gap: The plan does not always take our best current knowledge into account, meaning the next plan is based on outdated or incorrect information.

Reducing gap sizes

Because of these gaps, we acquire less usable knowledge for a given level of effort than we would have if the gaps weren’t there. The common response to this is to try harder.

  • If we micro-manage workers, create more bureaucratic processes, set performance goals with attached bonuses, then surely the execution will more closely match the plan!
  • If we run more detailed analysis, create more status reports, and try a small set of ideas at the same time, then surely we will be better able to study the outcome of the execution!
  • If we hire external consultancies to verify our conclusions, run independent tests, and create a big complicated documentation system with lots of policies around it, then surely we will be able to draw more correct conclusions from our observations.
  • If we plan in greater detail, over a larger timescale, create longer requirements documents, then surely the plan will to a better degree match our best knowledge!

Dave Farley argues that none of this works. So what does work? Go faster. Shrink the cycle.

PLAN   ———/!\———⮞ DO
 ⮝
 |                 |
/!\               /!\
 |                 |
                   ⮟
ACT ⮜————/!\———  STUDY

By making the steps smaller, we are able to reduce the effects of the gaps, too. If we make a tiny plan, there are only so many ways it can be executed incorrectly. If we try a tiny change, there are only so many ways it can be interpreted incorrectly, and so on.

The reason trying harder doesn’t work is that it has the opposite effect: the extra work at every step blows up the cycle to become larger, which makes the gaps larger, too. I don’t have any hard data at hand, but I imagine that just like planning complexity increases superlinearly with the length of the plan, the negative effects of these gaps also increase faster than the positive effects of trying harder to close them up.