# Problems & [Meta] Problem Solving

My sparse thoughts on problem solving.

Safe to Fail

Solving a problem with a high risk & high cost of failure is not advisable. The solution needs to be right first time, with no way of being sure.

Needing to be right in one go is much slower than rapid, low-cost iteration.

Finding ways to reduce or remove that risk creates a feedback loop, and an appetite to try.

[Example] Making failure safe: Upgrading a database client library

What is a database client library? For the purposes of this example, a piece of software critical to the application’s function.

For a long time a team I worked with had not been able to upgrade their databse client library, leaving them several versions behind with known vulnerabilities and reliability concerns.

It was critical for them to upgrade. But every time they tried, it went badly, memory shot through the roof, and the application crashed.

Here’s the approach they were taking:

There are a few evident issues here:

The wasted work comes from having just one version or another, and is therefore linked to the big-bang approach. Big bang approaches are always risky.

I’m not an expert on database client libraries. I knew less about them, and less about the specifics of this problem, than anyone else in the team. But what I did know is how to break this problem into something safer and more manageable.

I refactored the way the current library was used, to encapsulate it into a single place. This abstracted which library was being used from the rest of the application. (This is, besides all else, good design practice.)

Next I added a “client manager” which could, query by query, container by container, user by user, decide which library to use. This could be controlled by a feature flag and updated instantly.

I pushed this change, which had no impact whatsoever to the customer or application. I had not solved the problem of upgrading the library. I hadn’t done any investigation into the upgrade at all.

I showed the most junior engineer on the team the feature flag, the client manager, and how to use a memory profiler. Then I left them to it.

Within a week the engineer had plugged in the new library alongside the old, rolled it out for his user one query at a time, and used the profiler to identify the memory leak.

They shipped the new client library within another 2 days to all customers, rolling out gradually, with no further incidents. The reliability issues they had been battling for more than 2 years were gone.

Tight Feedback Loops

Tight feedback loops are more effective than knowing theory, for learning.

Neural networks today are proving this. AI with no knowledge of the rules of a game, that get reward/cost feedback quickly, are able to excel at the game.

Build feedback loops half as tight and you’ll progress rapidly.

[Example] Running things locally

As a software engineer, being able to run your program immediately on your machine means you can get feedback rapidly.

Reading a doc on how the system works or thinking for a long time about whether your change will work is hundreds or thousands of times slower than this feedback loop for developing understanding.

If this feedback loop slows down, that soon becomes untrue. If you have to push your changes to a shared server, with slow CI checks and a deploy queue, the price of each change goes up and suddenly it makes sense to be more methodical with each change.

[Example] Playing tennis

A tennis coach that helps you to understand your mistakes as you’re playing is many times more useful than a coach that takes to share at the end.

Every adjustment you can make in the game is a new experiment in getting better.

[Takeaway] Invest in feedback speed

With a good feedback loop things become self-documenting. You don’t need to share knowledge. The system itself is the teacher.

You don’t need to invest as much time in making this shot, or this code change, perfect. Adapt based on what you observed and go again.

High Fidelity Feedback

High fidelity feedback contains all the information you need to correct yourself.

Low fidelity feedback contains only a vague idea of the direction to travel.

[Example] Running form correction

Low fidelity feedback would be someone telling you your form is off.

Decent fidelity would be an in-depth description of what to change.

High fidelity feedback would be a resistance band around your thighs as your run so that you can feel your knees folding inward.

[Example] Debugging a program

If your program doesn’t do what you want, that’s low fidelity.

A log of the error is better.

A breakpoint with full context to inspect is high fidelity.

[Takeaway] A better compass

Feedback is to correct your course. The more information you have, the more precise that correction.

Principles

Principles are useful for encoding wisdom, solving future problems by abstracting lessons from previous problems.

Principles offer consistency & predictability, which are ever more useful in large organisations, where people impacted by your future decisions want to subscribe to some sense of what you will do.

Principles are also a strategic tool: This is who we are, what we do, and what we don’t.

They are personal & contextual. Here are mine.

what else

Resonance - [Feb 8, 2026]

Where Angels Fear to Tread -- EM Forster - [Jul 13, 2025]

Steve Jobs -- Walter Isaacson - [Jul 10, 2025]

The Fifth Risk -- Michael Lewis - [Jul 10, 2025]

The Ride of a Lifetime -- Bob Iger - [Jul 10, 2025]

James -- Percival Everett - [Jul 3, 2025]

Great Expectations -- Charles Dickens - [Jul 1, 2025]

Hillbilly Elegy -- JD Vance - [Jun 23, 2025]

Principles - [Jun 10, 2025]

Revenge of the Tipping Point -- Malcolm Gladwell - [Jun 9, 2025]

The Grand Babylon Hotel -- Arnold Bennett - [Jun 6, 2025]

The Seven Husbands of Evelyn Hugo -- Taylor Jenkins Reid - [Jun 4, 2025]

Rebecca -- Daphne du Maurier - [Jun 3, 2025]

A Promised Land - Barack Obama - [May 29, 2025]

Less - Andrew Sean Greer - [May 29, 2025]

Careless People - Sarah Wynn-Williams - [May 13, 2025]

Looking Glass War - John Le Carre - [May 7, 2025]

A Murder of Quality - John Le Carre - [May 4, 2025]

London Marathon 2025: Training Retrospective - [May 1, 2025]

The Human Factor - Graham Greene - [Apr 29, 2025]

London Marathon 2025: Race Review - [Apr 28, 2025]

Photos: London Marathon 2025 - [Apr 27, 2025]

Spectating the London Marathon 2025 [Sunday 27th April] - [Apr 27, 2025]

London Marathon 2025: Week 16 - [Apr 26, 2025]

Call for the Dead - John Le Carre - [Apr 23, 2025]

London Marathon 2025: Week 15 - [Apr 21, 2025]

The Manchurian Candidate - Richard Condon - [Apr 16, 2025]

London Marathon 2025: Week 14 - [Apr 13, 2025]

London Marathon 2025: Week 13 - [Apr 5, 2025]

London Marathon 2025: Week 12 - [Mar 30, 2025]

Effortless - Greg Mckeown - [Mar 26, 2025]

Leading - [Mar 26, 2025]

London Marathon 2025: Week 11 - [Mar 23, 2025]

London Marathon 2025: Week 10 - [Mar 16, 2025]

London Marathon 2025: Week 9 - [Mar 9, 2025]

London Marathon 2025: Week 8 - [Mar 2, 2025]

London Marathon 2025: Week 7 - [Feb 22, 2025]

London Marathon 2025: Week 6 - [Feb 16, 2025]

Problems & [Meta] Problem Solving - [Feb 16, 2025]

Little Dribbling - Bill Bryson - [Feb 14, 2025]

Bring Up the Bodies - Hilary Mantel - [Feb 10, 2025]

London Marathon 2025: Week 5 - [Feb 9, 2025]

Three Zero - [Feb 9, 2025]

The iPad mini has genuinely changed my life [no hyperbole] - [Feb 3, 2025]

London Marathon 2025: Week 4 - [Feb 2, 2025]

Coming AI: Valuing Humans in a world where they have no economic value - [Jan 28, 2025]

Value & Price - [Jan 28, 2025]

The Vegetarian - Han Kang - [Jan 27, 2025]

Wolf Hall - Hilary Mantel - [Jan 27, 2025]

London Marathon 2025: Week 3 - [Jan 26, 2025]

Deriving my own proof for Unitary matrices - [Jan 19, 2025]

London Marathon 2025: Week 2 - [Jan 19, 2025]

David Copperfield - Charles Dickens - [Jan 17, 2025]

London Marathon 2025: Week 1 - [Jan 12, 2025]

NYC & DC '24 - [Jan 9, 2025]

Linear Algebra Playground - [Jan 8, 2025]

Configuring an IKEA wireless light switch: Saving you the pain - [Jan 7, 2025]

Goals & Goal-setting - [Jan 7, 2025]

Organisation - [Jan 7, 2025]

Digital Feeds - [Jan 6, 2025]

London Marathon 2025: Training Begins - [Jan 5, 2025]

Everything I've read in 2025 (so far) - [Jan 1, 2025]