Nonlinear Thinking


A workshop for thinking well, together, about systems and change.

We are conditioned to think linearly. Linear thinking is so ubiquitous, many of us don’t recognize it as one type of thinking. We think of it as, simply, thinking.

Linear thinking enables us to design, build and deploy software. But what happens as complexity increases – as we move from software to systems (of software)? Linear approaches can’t deliver systems. For systems, we need to think (and act) nonlinearly.

Nonlinear thinking is also called systems thinking, strategic thinking, pattern thinking, parallel thinking, systemic reasoning and other names. Though we may be brilliant software developers, architects or strategic leaders, when it comes to nonlinear thinking, we are blocked by two obstacles:

  • One: We are spectacularly terrible at nonlinear thinking.
  • Two: We don’t know that we are terrible at it. In fact, the worse we are at nonlinear thinking, the more believe we are good at it!

In this workshop, we will explore practices for skillfully and consistently cultivating nonlinear thinking and approaches. These are the key to creating conceptual integrity: “Conceptual integrity is the most important consideration in systems design.” – Fred Brooks

Course contents

In this workshop, we will combine individual, small group and whole group exercises. The goal is to introduce skills you can practice, some you might not think of as “IT” but are nevertheless essential.

Introduction to systems (nonlinear) thinking

What is nonlinear thinking and why does it matter? My journey from software engineer to systems architect is likely familiar. And motivated by painful experiences we share.

Crafting conceptual integrity

What do we mean by “conceptual integrity”? What are the skills we need to practice it?

Changing your own mind

We can not improve our thinking if we aren’t aware of our thinking (and experience.) All changes in production begin with our thinking. How do we begin with self awareness and why is it a core skill professionally?

Respond rather than react

Decades of systems science has shown two things:
There’s a lot of blind panic involved in systems challenges. (Adopting Kubernetes will not resolve them.)

• Change must include rewiring how we think, communicate and behave. Fortunately, there are relatively painless practices we can rely on.

Systemic reasoning (together)

Nonlinear thinking is a practice … and something we practice together. Systemic reasoning moves us out of politics and opinion-giving into creating the best possible recommendations, under the circumstances, despite uncertainty. Spoiler: there is always uncertainty. Spoiler v2: I will say that we need to model together.

Systems exercise: Where would you begin?

We will model together an interesting (and familiar) real world systems challenge. This is technical challenge yet many non-technical factors impact it. In this situation, there is no linear path to transformation – we’ll need to take a nonlinear approach.

We’ll focus on finding leverage points – places to intervene where a small change will have big impact. We’ll consider domain logic, patterns and relationships, as well as blockers and helpful/harmful feedback loops.

We won’t Solve Everything but we will create structured, actionable thinking in the midst of uncertainty.

Target audience and prerequisites

This is a hands-on, interactive workshop for people who’ve changed technology (software and/or systems) and know a bit about what works and what doesn’t work. You’ll leave with further resources to explore. Reading Thinking in Systems by Donella Meadows is a great (optional) preparation.

3 May 2023