DEV Community

CBT Tools
CBT Tools

Posted on

I tracked my anxious thoughts for 30 days as a developer — here's what CBT revealed

For 30 days, I kept a CBT thought record every time I felt anxious at work. Not a journal — a structured 7-step exercise that forces you to examine the thought instead of marinating in it.

Here's what I found, and why it changed how I work.

The setup

I'm a developer. I build things, I ship bugs, I get code reviews, I go on call. Normal stuff. But for years, each of these events came with a side order of anxiety that I just accepted as "how I am."

A therapist suggested I try a thought record — the core CBT homework. It's not meditation. It's not "think positive." It's a structured worksheet with 7 steps:

  1. Situation — what happened? (objective facts only)
  2. Thought — what went through your mind?
  3. Emotion — name it, rate it 0-100
  4. Evidence for the thought
  5. Evidence against the thought
  6. Balanced thought — weighing both sides
  7. Re-rate the emotion

I did this 47 times over 30 days. Here's what the data showed.

Finding 1: The same 3 distortions, over and over

I expected variety. Instead, 38 of 47 thought records involved the same three cognitive distortions:

  • Mind reading (31 times): "They think my code is bad." "My manager thinks I'm underperforming." "The interviewer thinks I'm stupid."
  • Catastrophizing (24 times): "This bug will take all day." "If I fail this interview, I'll never get a job." "This PR rejection means I'm not senior enough."
  • All-or-nothing thinking (18 times): "Either the review is clean or I'm a bad developer." "If I can't solve this in an hour, I don't deserve to be here."

The same three patterns, 80% of the time. Once I saw that, I stopped needing to do the full 7 steps every time — I could catch the pattern in step 2.

Finding 2: My predictions were wrong 34 out of 36 times

This was the most useful finding. I started tracking: when I catastrophized ("this will take all day"), what actually happened?

  • "This bug will take all day" → solved in 45 minutes (12 times)
  • "They'll reject the PR" → approved with minor changes (8 times)
  • "I'll blank in the interview" → answered fine, got the offer (3 times)
  • "On-call will be a disaster" → 2 routine pages, both resolved in 15 min (4 times)
  • "My manager is going to fire me" → performance review was positive (7 times)

34 out of 36 catastrophic predictions were wrong. That's a 94% disconfirmation rate.

After 30 days of seeing this data, catastrophizing just... stopped working on me. Not because I told myself "don't catastrophize" — but because I had 34 data points showing my brain's threat detection system was miscalibrated. The thought record didn't argue with the thought. It just collected evidence until the thought became untenable.

Finding 3: Anxiety dropped 60% by step 7

I rated my anxiety at step 3 (after naming the thought) and again at step 7 (after the balanced thought). Average drop: from 72 to 29. That's a 60% reduction in about 5 minutes of writing.

The mechanism isn't positive thinking. It's that steps 4 and 5 force you to consider evidence you were filtering out. The balanced thought in step 6 isn't "I'm a great developer" — it's "some comments found real bugs, but 9 were style preferences and the reviewer said good work overall." That's not optimism. That's accuracy.

Finding 4: The situation didn't matter as much as I thought

I thought code reviews were the trigger. But when I looked at the data, the anxiety level correlated more with my sleep and whether I'd eaten than with the severity of the situation. A 3-comment review on 4 hours of sleep produced more anxiety than a 12-comment review when I was rested.

This is the thing CBT doesn't explicitly teach but the thought record reveals: your baseline state determines your reaction more than the stimulus. I couldn't control the code reviews, but I could control sleep and lunch.

What I actually did differently

After 30 days, three changes:

  1. I do a 2-minute thought record when I notice anxiety spiking — not the full 7 steps, just steps 1-5. The full version is for when I'm really stuck.
  2. I track prediction accuracy — when I catch myself catastrophizing, I note the prediction and check it later. The 94% disconfirmation rate is the single most useful piece of data I have.
  3. I protect sleep before deadlines — not because sleep is healthy, but because my data shows anxiety is 2x higher on poor sleep and my catastrophizing is 3x more frequent.

The tool

I built a free interactive version of the thought record (no signup, no backend, runs in your browser) because doing this on paper was friction and I kept skipping it.

It's at https://473185670.github.io/cbt-toolkit/ — along with a cognitive distortion detector, a core belief drill, a mood tracker, and a panic diary. All vanilla JavaScript, all private (data stays in your browser).

If you want to try the 30-day experiment, the thought record tool makes it about 90 seconds per entry. 47 entries took me about an hour total over 30 days. The ROI on that hour is the highest of anything I did this year.


If this resonated, I write about CBT × developer productivity. Follow for more. The complete toolkit with 22 free interactive tools is at https://473185670.github.io/cbt-toolkit/

Top comments (1)

Collapse
 
marcusykim profile image
Marcus Kim

The 34-of-36 disconfirmation count is the strongest part because it turns catastrophizing from an argument with yourself into a prediction you can test. The drop from 72 to 29 after the seven-step record is useful too, but the sleep finding may be even more actionable: a three-comment review on four hours of sleep felt worse than a 12-comment review while rested. From an engineering perspective, this works like lightweight observability-capture the state, compare the forecast with the outcome, then adjust the system-but one person's 47 entries are best treated as a personal baseline rather than a universal result.