You re-read the diff for the 11th time. The tests pass. The linter passes. Your teammate already approved it. And yet you haven't hit Merge.
If you've been a developer for more than a week, you've done this. We call it "being careful." CBT calls it something else: a safety behavior - and it's quietly keeping you anxious.
What is a safety behavior?
In Cognitive Behavioral Therapy, a safety behavior is an action you take to prevent a feared outcome or reduce anxiety in the short term. The problem isn't the action itself - it's what it does to your belief system.
Here's the mechanism, and it's the part most developers miss:
Safety behaviors reduce anxiety now, but prevent your brain from learning that the catastrophe isn't coming.
You check the deploy logs every 90 seconds during on-call. Nothing breaks. Your brain concludes: "My checking is what kept it stable." Next on-call, you check every 60 seconds. The anxiety increases over time, because you never give the disconfirmation a chance to land. The belief - "I can't handle this without monitoring" - gets reinforced with every safe shift.
This is the trap. Let's name the five that show up most in developer work, and how to break each one.
1. Over-checking
What it looks like: Re-reading your PR 10 times before requesting review. Re-running the test suite after every one-line change. Refreshing the CI dashboard compulsively.
Why it backfires: Each check gives a tiny hit of relief ("tests still green, I'm safe"). That relief is negative reinforcement - it rewards the checking behavior, so you check more next time. Meanwhile, the actual signal-to-noise ratio of your checks drops to zero. You stop seeing the code; you're just scanning for the feeling of "done."
The break: Run the tests once. Commit. Walk away for 5 minutes - physically. When you come back, resist the urge to re-check. Sit with the discomfort. The goal is to let your brain experience: "I didn't check, and nothing caught fire." Repeat. The anxiety drops within 2-3 cycles. This is called response prevention - you prevent the safety response and let extinction happen.
2. Reassurance-seeking
What it looks like: Slack-pinging a senior "is this approach okay?" before you've tried it. Asking in standup "did I do that ticket right?" Re-asking the same question in three different channels.
Why it backfires: Every "yes, looks good" feels like evidence you're okay - but it's borrowed confidence. You never build the internal signal "I can evaluate my own work." Worse, the reassurance has a short half-life. You need it again tomorrow, on the next PR. Over months, your self-trust atrophies.
The break: Before asking, write down your own answer. "I think this is right because X, and the risk is Y." Then ask - but frame it as a review of your reasoning, not a request for a verdict. Over time, stretch the gap: decide alone on low-stakes PRs, then medium, then high. You're running a behavioral experiment: "Can I trust my own judgment?" The data is almost always yes.
3. Avoidance
What it looks like: Picking the easy ticket off the board again. Putting off the code review you were assigned. Skipping the retro. Procrastinating on the feature you don't fully understand.
Why it backfires: Avoidance is the most reinforcing behavior in psychology. It gives complete relief, instantly. But it teaches your brain: "That thing is dangerous - good thing you ran." The feared task grows bigger in your imagination every day you avoid it. By Friday, a 2-hour task feels like a monster.
The break: The antidote isn't "just do it" - it's graded exposure. Break the task into the smallest possible first step. Not "write the service" - "open the file. Read the existing pattern. Close it." That's step one. Step two: write one function signature. Step three: write the tests. You're not building the feature; you're teaching your brain that engagement with this task is survivable. The anxiety peaks at step one and drops with each subsequent step - that's habituation, and it's the mechanism behind every effective exposure therapy.
4. Over-preparation
What it looks like: Reading 5 tutorials before writing 1 line. Watching the full 6-hour course before starting the project. Buying 3 books on the framework you need to use once.
Why it backfires: Preparation feels productive, so it flies under the radar. But it's a safety behavior when its real function is to delay the moment of uncertainty - the moment you actually have to produce something and risk it being wrong. You stay in the "learning" phase forever because learning never judges you. Building does.
The break: Cap prep time at 20% of the total budget. Then build - badly, if needed. The fastest learning happens during the doing, when concrete failures give you specific questions to go look up. A tutorial watched cold teaches you 10% of what the same tutorial teaches after you've been stuck on a real problem for an hour. Build first, study the gaps.
5. Hypervigilance
What it looks like: Checking Slack every 2 minutes during on-call. Monitoring the Grafana dashboard when nothing is paged. Scrolling incident channels you're not even on-call for, "just in case."
Why it backfires: Hypervigilance keeps your nervous system in low-grade fight-or-flight for hours. It's exhausting, and it degrades exactly the thing you need if a real incident hits: your judgment. You also start interpreting normal noise as signal - every tiny latency blip becomes a catastrophe in your mind.
The break: Define the actual alarm surface - the pager, the Slack channel you're explicitly mentioned in. Everything else is off-limits during a shift. If the pager is silent, the system is fine, by definition. Go for a walk. The paradox: you'll respond faster and better to a real page if you weren't already fried from monitoring.
The pattern underneath all five
Every safety behavior has the same structure:
- Short-term relief (you feel better for a moment)
- Prevented disconfirmation (you never learn the fear was wrong)
- Reinforced belief ("I need this behavior to be safe")
- Increased anxiety long-term (the behavior escalates)
The way out is always the same too: drop the behavior, survive the discomfort, let your brain update. It's uncomfortable for about 2-3 repetitions. Then it works. CBT has decades of research behind this - it's not a hack, it's the most evidence-based intervention in psychotherapy.
A free tool that detects yours
I built a Safety Behavior Detector - vanilla JavaScript, no signup, no backend, your data stays in your browser. You log what you did (the action, not the thought), and it classifies it into the 6 safety categories above plus 3 adaptive ones (approach, tolerate, CBT skill). It tracks your safety rate over time so you can see the pattern, and generates a response-prevention plan specific to your dominant behavior.
It's one of 23 free CBT tools in the CBT Toolkit - thought records, mood tracker, panic diary, core belief detector, habituation tracker, all privacy-first.
The takeaway
"Being careful" and "being thorough" are genuine virtues. Safety behaviors are their impostors - they look like care but they run on anxiety, and they feed the anxiety they're trying to soothe. The test is simple: does the behavior make you more or less anxious over the next month? Real care calms you down. Safety behaviors wind you up.
If you recognize yourself in any of the five, pick one. Run the experiment. Drop the behavior for one cycle and see what actually happens. The catastrophe almost never comes - and that's the whole point.
More in this series
A practical CBT toolkit for developers. Each article pairs one CBT concept with one developer pain point.
- 5 Cognitive Distortions That Kill Developer Productivity (And How to Catch Them)
- 5 Cognitive Distortions That Kill Code Review Confidence (And How to Break Them)
- 5 Core Beliefs That Make You Dread Performance Reviews (And How to Rewire Them)
- 5 Cognitive Distortions That Fuel Developer Burnout (And How to Break Them)
All tools are free, run in your browser, and store data locally — no signup, no backend.












