The Strangler Fig Strategy for Breaking Bad Habits
Habits don't live in our values; they live in our wiring. Instead of "deleting" a behavior, learn how to build a low-friction route that strangles legacy traffic one request at a time.
Dillon was halfway through the meeting when the "second version" of himself arrived.
The first version stayed upright, nodded at the right moments, and keeping the camera on to look present. The second version—his distracted brain—had already slipped behind the curtain.
Earlier that morning, Dillon had heard a coworker use a Polish word. As the presenter switched to a dense slide full of tiny fonts and complex arrows, Dillon’s focus snapped.
He opened a new tab to search for the word.
Did you mean: rozkojarzony
rozkojarzony/rohz-koh-YAR-zoh-nih/
adj. (Polish)
Meaning: distracted; scatterbrained; absent-minded
Dillon mouthed the word, completely forgetting his camera was on. By the time he noticed a decision hidden in a bullet point worth discussing, the context was gone. He had done the nods and the face, but he walked away missing key information he was supposed to catch. The sting wasn't guilt for being human; it was the annoyance of being "in" the meeting without actually being in it. Once you feel that gap, you start to see the pattern: your attention slips the same way, and you pay for it repeatedly.
That is the awkward truth about habits. They do not live in our values. They live in our wiring.
And wiring, in any system, is hard to rip out without breaking something else.
The problem with most habit advice
Most mainstream habit advice has a hidden assumption: if you understand the problem and want the outcome badly enough, you can simply “stop doing the old thing” and “start doing the new thing”, like upgrading your Operating System or in software terms, a "Big Bang" rewrite.
But human behavior is not a blank page. It is a set of pathways trained by repetition, reinforced by small rewards, and triggered by familiar cues. Over time, those pathways become the default, which is why the “old thing” keeps firing even after your goals change.
Think of your habits like an old house that has been lived in and patched for years. Maybe an outlet stopped working, so someone ran an extension cord "for now," and the furniture rearranged itself around it. Or a leaky pipe got “temporarily” fixed with a clamp, and the cabinet under the sink became a place where nobody stores anything anymore. None of these fixes are elegant, but the household has adapted around them.
That is what habits are: a set of small adaptations you built to get through real days, and then organized your life around.
If you walk into that building and say, “Fix the whole thing by Friday,” you are not asking for a simple improvement. You are asking people to undo a long history of adaptations, without breaking anything the building currently relies on.
Sure, in theory, a big-bang rewrite cleans the slate and removes the old problems in one shot.
In practice, the “one shot” part is exactly what tends to fail.
A large software system has dependencies you forgot existed. Real customers use it every day. Reliability and continuity matter more than elegance.
Human behavior works similarly. Even after a person decides to change, the old routine still has upstream triggers: cues, contexts, emotions, and micro-rewards that keep pulling them back into it.
Behavioral research has a name for part of this. Habits can be understood as "context-response associations", which means the environment itself becomes a trigger that bypasses deliberation and pulls behavior into motion.[1]
When you rip out a behavior without replacing what it was doing for you, you do not get a clean slate. You get a vacuum. And vacuums get filled by whatever is easiest, which is why “just stop doomscrolling” often becomes “doomscrolling, but now with shame.”
What you want is migration. Not self-erasure, but a gradual swap: keep life running while you move the behavior, piece by piece, toward something better.
That is why, when software teams need to change a live system without breaking production, one of the cleanest moves is the Strangler Fig pattern.
Introducing the Strangler Fig Pattern
The Strangler Fig pattern is a way to replace a legacy system gradually by building a new system around it, routing functionality piece by piece, and letting the old system shrink through disuse.
Instead of rewriting everything at once, you identify seams, introduce a routing layer at the boundary, and shift usage incrementally from old to new until the old becomes irrelevant.
The bet is that the new system is not just different. It is easier to use, closer to what people need, and simpler to extend. So you design the migration so each small switch makes the “new way” the path of least resistance, which is how gradual change starts to compound.
If habits are triggered by context and reinforced by repetition, then willpower is not the primary tool. Design is.
The leverage point is not the “bad habit” itself.
It is the moment the habit begins: the cue, the itch, the upstream pull that starts the whole sequence.
Behavior-change research consistently points toward interventions that work at that moment by shaping cues, repetition, and context, not by relying on motivational speeches you give yourself.[2][3]
The leverage point is not fighting the bad habit head-on, but designing for the moment it starts.
How to Build a "Proxy Layer" for Your Behavior
In the Strangler Fig pattern, you do not start by ripping out the old system; you start by adding a small layer in front of it to catch a moment early and gently steer what happens next.
In human terms, this is the split second between the "cue" (the itch to distract yourself) and the "routine" (opening the tab). By the time you "decide" to be distracted, you have usually already moved. You must redesign that first step.
Your proxy—your new routing layer—must have two properties to survive in the real world:
- Low Friction: It must be easy enough to do when you are tired, distracted, or emotionally flat, because that is when the old habit has the highest "uptime".
- Immediate Reward: It must provide some relief or payoff, because habits are reinforced by short-term rewards more than long-term plans.
Distracted in meetings, without self-hate
Let us return to Dillon.
Dillon’s frustration came from the sting of missing context. The "rewrite" approach would be: "No more tabs. Focus harder". The Strangler approach introduces a router.
When the drift starts, Dillon does not negotiate with himself. He opens his notes and writes one sentence: "So far, the point is: _____."
It is small enough to do even when he is tired, and it pulls his attention back without feeding the distraction. He repeats this every couple of minutes or whenever the presenter changes slides. Over time, the meeting becomes the easier place to put his attention, not because Dillon suddenly developed more discipline, but because the new path is simpler to take.
This is not a moral improvement. This is load balancing.
Design Your Strangler Fig Migration
To stop arguing with yourself and start designing a route that runs on a bad day, follow this migration plan:
- Name the legacy service: Write one sentence: "When I feel [cue], I usually [habit]".
- Example: "When I feel tired at the end of the day, I usually skip the workout and watch something instead".
- Find the edge: Identify the repeatable moment the sequence begins.
- Example: "It is 6:30 p.m. I close my laptop. I sit on the couch 'for a minute'".
- Insert a router (the intercept): Pick a 5-30 second action you can do even when your energy is low. This is your smallest viable switch.
- Example: Instead of thinking about going to the gym, watch a workout video instead.
This is intentionally small. The first job is adoption.
- Example: Instead of thinking about going to the gym, watch a workout video instead.
- Route to a competing routine: This is the next step you are trying to grow around the old habit.
- Example: Do 1 exercise (one push-up, one squat, anything that counts as “movement started”).
- Preserve a reward: The new route needs a payoff or the old path will win on hard days.
- Example: After 1 exercise, give yourself a small hit of completion (a checkmark or permission to stop with no guilt).
- Measure behavior, not identity: Your only question is: “Did more requests go to the new route this week?” Not “Was I good?”
- Router Metric: "Workout video opened" (Count Yes/No).
- Route Metric: "Did 1 exercise" (Count Yes/No).
Why separate these metrics? If the video is opened but the exercise stays flat, , you learned something real. The intercept is working, but the first movement is still too high-friction.
That is your next design problem: make the “1 exercise” step smaller until it can win on low-energy days too (for example: “stand up on 1 leg for 3 seconds,” “put shoes on,” or “touch your toes”).
- Expect variability: Habit timelines vary widely, so design for inconsistency rather than demanding perfection.[4]
- Example: Some weeks the router happens five times and the exercise happens twice. That is not a character flaw. That is a signal. The whole point is to keep learning where the friction lives and adjust accordingly.
- Keep upgrading the route: Once the router and the first step are happening reliably, increase the route at a pace that works for you
- Example: Add one small layer at a time. One more exercise. One more set. One more minute.
Even a 1% upgrade each week compounds into a very different system over a year.
The Gotchas of Parallel Running
In software, the Strangler pattern is not magic. For a while, you run two systems in parallel, which increases cognitive load and the surface area for mistakes. Human change has the same tax; you are carrying the old version of yourself and the new version simultaneously.
This is why it is critical to keep the router and the route easy. If the new way feels like punishment, your brain will skip it. If it feels easier than the old move, it becomes the new default.
You must design for inconsistency rather than demanding perfection.
Counterpoints
While powerful, this lens has boundaries:
- People are not software: Humans have emotions and biology that do not behave like deterministic code. Use this as a lens for noticing patterns, not as a claim of absolute machine-like control.
- Hard stops are sometimes required: This framework is for everyday behaviors like distraction or procrastination. It is not for addiction or situations requiring professional support. Even in hard stops, building a replacement route immediately is essential because vacuums get filled.
The Return
A few weeks later, Dillon is still Dillon, but the change shows up in the moment he starts to drift. Instead of opening a new tab, he writes his one sentence: "So far, the point is...". The old path still wins on tired days—that is just legacy uptime. But the direction shifts. As the meeting becomes easier to hold in his head, the impulse to flee loses its power.
When a system stops getting used, it does what systems always do: It shrinks.
You do not replace a habit by deleting it; you replace it by building a low-friction route that strangles its traffic, one request at a time.