Reflective thinking

On the one hand, agile processes, like Scrum, promote a set of practices. On the other hand, they are based on a set of principles. While practices are important at present time, principles allow us to adapt to future situations.

In this talk we look at Inspection and Adaptation and construct an underlying theory to help organizations practice these activities. Why a theory? Because, as much as we want to, simply invoking "Inspect and Adapt" will not make it happen.

It turns out that for almost half a century the software engineering community has been working on a theory of reflection, which is defined as "the ability of a system to inspect and adapt itself". We draw parallels between the design of software systems and the design of organizations, and learn several lessons:

  • Reflection must be built into the organization.
  • Reflection incurs a cost that must be planned for.
  • Inspection is easier than adaptation.
  • We can only reflect on what is explicit.
  • Reflection is a design tool that enables unanticipated evolution.

This sounds technical, but the most important observation is that reflection is an inherent human ability. It only requires training to develop it into a capability.