Andy Norton
@andyjnorton (🤦)
@andynorton@mastodon.social
What needs to be true?
Patterns of engineering agility
For a round?!
Hello, I’m Andy.
I want to talk
about a
fl
ywheel for
engineering
agility
Patterns that help us to get
to what good looks like
Patterns that help
change to stick
Change that
sticks is hard
though
So, what needs to be true for
this to happen?
#1 That we need
an operating
system for our
organisations
#2 That we use
constraints to
our advantage
#3 That we
anticipate phase
changes of scaling
#4 That we utilise
the power of
communities
#5 That we use
improvement
kata
checkpoints
Better
engineering
outcomes
#1 That we need an
operating system for
our organisations
"An operating system is a set of
norms and actions that are
shared with everyone in the
company”
A good operating system
makes it clear, at every level,
what we’re trying to achieve,
how to communicate progress,
and how to measure
achievement
Boundless autonomy
Mission
The driving force that
guides decision-making,
strategy and actions
Objectives
The specific strategies
and actions that will be
taken
Principles
The core set of values,
and how we stay true to
the Why and How
What does good
look like?
How do we make a
decision here?
How do we know if
we’re on the right
path?
Once an organisation doesn't fit in a room
anymore… you need an operating system
Touchstone
documents for your
operating system
The vision, and
mission
The principles of how
we work
What each team’s
purpose is, and how
they interact with others
The objectives for the
next 12 months
Organisations
have a memory
But it’s a sliding window of
knowledge.
New person
☁☁
☁
☁
☁
You need to save your
organisation’s memory to
an operating system
Mission Objectives Principles
Strategic
planning
Team APIs Goals Metrics
RACI Management
mechanisms
Communication
and documentation
practices
Operating cadence
#1 That we need
an operating
system for our
organisations
#2 That we use
constraints to our
advantage
We need to face up to our
organisational constraints,
and put some of our own in
place.
How do we find them? 🔎
If you’re struggling
to find constraints,
focus on your value
stream.
https://www.vige.se/blog/2021/12/2/how-to-illustrate-a-value-stream-a-proposal-and-a-request-for-input
A series of actions that need to
be taken in order to deliver value
to a customer
Operational value stream Development value stream
The series of activities required
to transform a business need
into a product or service that
creates value for a customer
The development value stream enables the operational value stream
Your homework for next week
Not all constraints are bad
(some can be really helpful)
Explain complex things using
only the 1000 most common
words in the English language
?
“Big group of people together talking about why other people
don’t talk to each other enough”
Some practical examples of
useful constraints…
Guide rails
Guard rails
Guard rails
Guard rails are
our table stakes.
Teams should… have monitoring, alerting
and run-books set up
build dashboards about
business transactions
only communicate with
other teams systems async
have CI/CD from day one
Build a walking
skeleton
Technical blueprints
A shared understanding of what good can look like
Build a golden path
TDD
Observability
Pairing
Trunk-based
Serverless
Event-driven
Focus on patterns
Not just the big picture
Guide rails
Guard rails
Walking skeleton
Technical blueprints
Golden path
#1 That we need
an operating
system for our
organisations
#2 That we use
constraints to
our advantage
#3 That we
anticipate phase
changes of scaling
What does a scaling
organisation look like?
Moving fast, but taking
on debt
Hiring more managers,
decoupling, and
improving tools
Building platforms,
redoing things, and
splitting into different
units
Scaling happens in phases
Things we talk
about when we
talk about scaling
Things we don’t
talk about when we
talk about scaling
The organisation
doesn't fit in a room
anymore
And you probably
aren't in all the
channels on Slack*
* or Teams, sorry about that
Things that really
don't scale well
Capabilities Brent Communication
The things
we’re learning
You can't share hats anymore
The skills of today aren't
necessarily the skills of tomorrow
You're more likely to be doing 1
thing well, versus 3 things okay-ish
Capabilities
The capabilities we have
• What skills we have across the
teams, and capabilities we
currently have
The capabilities we need
• What skills we need to develop
and the capabilities that will
allow us to scale effectively
If these don’t
align, we need
to codify the
difference
- Bias for action
- Prototyping
- Lean agile approach
- Design sprints
- Experimentation
- Data driven
- Observability
- Product thinking across roles
- Strategic domain-driven design
- Facilitation
- Delivery management
- Continuous improvement
- Standardisation
- Value stream
management
How do we anticipate future
scale?
"I wisely started with a map” - J.R.R. Tolkien
For each thing we do,
do we build it or buy it?
Is it experimental, or a
commodity?
Does it give us a
competitive advantage
or is everyone doing it?
Competitive Advantage Cost of doing business
Driven by gut Driven by metrics
High future worth Reducing margin
So, we’ve scaled up, we’ve seen what the
future looks like, and now my brain hurts.
Agile conference
bingo
Cognitive
load
Dunbars
number
Conway’s
law
Cognitive
load
Dunbars
number
Conway’s
law
Cognitive
load
Dunbars
number
Conway’s
law
Cognitive
load
Dunbars
number
Conway’s
law
Cognitive
load
Dunbars
number
Conway’s
law
Cognitive
load
Cognitive
load
Conway’s
law
Dunbars
number
Wardley
maps
Team
Topologies
Team
Topologies
Dunbars
number
Team
Topologies
Wardley
maps
Agile conference
bingo
Cognitive
load
Dunbars
number
Conway’s
law
Cognitive
load
Dunbars
number
Conway’s
law
Cognitive
load
Dunbars
number
Conway’s
law
Cognitive
load
Dunbars
number
Conway’s
law
Cognitive
load
Dunbars
number
Conway’s
law
Cognitive
load
Cognitive
load
Conway’s
law
Dunbars
number
Wardley
maps
Team
Topologies
Team
Topologies
Dunbars
number
Team
Topologies
Wardley
maps
Cognitive load
101
Intrinsic
• learning new tech stacks and tools
• understanding complex problem
domains
• coordinating efforts
• technical decision making
• table stakes
Germane
• workshopping
• maturing practices
• knowledge stewardship
• collaboration
• deliberate practice
• innovative problem solving
• novel learning that can become
intrinsic over time
Extraneous
• difficult processes
• unclear decision making
• fragmented data sources
• having to go back and
validate everything
• i’m in Jira hell
Teams need to work with
abstractions to balance
their cognitive load
We need a Platform team to
provide a starter kit for AWS
We don’t want to have to
calculate the stock
ourselves, we’ve got a
finance domain to model
We need to focus on user
needs, not user access
But there’s work that
falls between the
teams
Who is going to make sure
we align our approach to
using Datadog?
How do we start using AWS
in this team?
How do we agree on our
Event-driven architecture?
Working Groups
Enabling
Teams
Platform Teams
We can use different
types of teams to
balance cognitive load.
Enabling teams to change
the foundations
Enabling
Teams
• How we migrate from GCP to AWS?
• How do we embed good practices?
• Collaborates closely with teams for a
period of time until they’re no longer
needed
Working groups to define things
and put in place stop-gaps
Working Groups
• Bring people with expertise together
• How do we agree good practices?
• Short-lived around a problem
Enabling
Teams
https://esilva.net/articles/architecture-modernization-enabling-team
Architecture Modernisation Enabling Team
Scaling introduces capability gaps Use Wardley mapping for situational awareness
Balance our cognitive load
Enabling
Teams
Working Groups
Use different team types to
fi
ll capability gaps
#1 That we need
an operating
system for our
organisations
#2 That we use
constraints to
our advantage
#3 That we
anticipate scaling
phase changes
#4 That we utilise the
power of communities
Now I’m only wearing 1
hat instead of 3, how do I
get better at my role?
How do we take what
we’re learning and codify
it?
I’ve just joined, what’s
our joined up approach
to doing this thing?
Communities are
custodians of communal
memory and knowledge
Communities help
organisations get
better at…
The definition of the roles
Making learning and development
integral work
Developing the core capabilities of a
business function
Don’t take my word for it…
“We will spend time as a group to learn about X,
decide if it’s useful and implement it as a new
standard across our teams in the next few months.”
Communities need
people to manage them.
#1 That we need
an operating
system for our
organisations
#2 That we use
constraints to
our advantage
#3 That we
anticipate phase
changes of scaling
#4 That we utilise
the power of
communities
#5 That we use
improvement kata
checkpoints
Supporting change is
hard.
Change introduces
capability gaps in people.
Having capability gaps is
scary, and can lead to
resistance to change.
We need inflection
points, nudges
and a plan.
https://blog.crisp.se/2013/05/14/jimmyjanlen/improvement-theme-simple-and-practical-toyota-kata
DevOps
practices
Delivery
methods
Testing
approach
Incident
management
Service
readiness
Observability
Value stream
mapping
Cognitive load
assessment
Team API
review
4 steps to making change stick
Start with an agreed measure of
what good looks like
Look at where the team currently
is in relation to the standard, what
top capabilities do we want to
improve?
Looking at our current state, what
can we change to enable this
capability
We pick the top 4-6 things we’re
going to improve
1. Find an agreed measure
of what good looks like
2. Look at where the team
currently is in relation to the
standard, pick the top
capabilities we want to improve
3. Given current state, and the
suggested work, where are the
gaps now? What tangible work
is required to improve things?
🥇
🥈
🥉
4. Push the improvements into the
next cycle of work for the team,
this improvement work should
link back to our agreed standards
Make them regular ceremonies,
record the results, and compare
How do we know if
we’re getting better?
Apply fitness functions
Quantitative measure that gives
us a dial - think ‘warmer, colder’
“Are we moving towards or
away from our goal?”
What percentage of our users
go through the new shiny API
we’ve been working on?
What’s our lead time?
How many meetings do we have on
no-meetings Wednesday?
#1 That we need
an operating
system for our
organisations
#2 That we use
constraints to
our advantage
#3 That we
anticipate phase
changes of scaling
#4 That we utilise
the power of
communities
#5 That we use
improvement
kata
checkpoints
Better
engineering
outcomes
Thank you!

What needs to be true? Patterns of engineering agility