<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Fuyuki0</title>
    <description>The latest articles on DEV Community by Fuyuki0 (@fuyuki0).</description>
    <link>https://dev.to/fuyuki0</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4120528%2Faffd7a37-ae07-4d7e-bf53-360425bb1fa8.png</url>
      <title>DEV Community: Fuyuki0</title>
      <link>https://dev.to/fuyuki0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fuyuki0"/>
    <language>en</language>
    <item>
      <title>"Do you use AI?" is a process question. He answered a status question.</title>
      <dc:creator>Fuyuki0</dc:creator>
      <pubDate>Tue, 15 Sep 2026 00:40:05 +0000</pubDate>
      <link>https://dev.to/fuyuki0/do-you-use-ai-is-a-process-question-he-answered-a-status-question-1bfb</link>
      <guid>https://dev.to/fuyuki0/do-you-use-ai-is-a-process-question-he-answered-a-status-question-1bfb</guid>
      <description>&lt;p&gt;I saw someone tell this story recently, so I am going by their telling of it.&lt;/p&gt;

&lt;p&gt;They were in an interview. The interviewer asked: "do you use AI?"&lt;/p&gt;

&lt;p&gt;They took it badly. The way they told it, the question itself was out of&lt;br&gt;
line - an attempt to catch them out. So they answered with a question of&lt;br&gt;
their own: &lt;strong&gt;are you going to use a stove instead of a microwave? The world&lt;br&gt;
moves forward. They will stop making stoves eventually.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They told the story as a win. I do not think it was one, and it took me a&lt;br&gt;
while to work out why. It is not because using AI is wrong, or because&lt;br&gt;
answering back in an interview is wrong. It is that a specific and very&lt;br&gt;
common mistake is happening in that exchange, and I have made it myself.&lt;/p&gt;

&lt;h3&gt;
  
  
  They answered a question nobody asked
&lt;/h3&gt;

&lt;p&gt;"Do you use AI?" is a question about method. It has a boring, factual&lt;br&gt;
answer: yes, here, for these things, and I check it like this.&lt;/p&gt;

&lt;p&gt;What they heard was "are you a real engineer?" That is a question about&lt;br&gt;
status, and status questions feel like they need to be won rather than&lt;br&gt;
answered.&lt;/p&gt;

&lt;p&gt;The gap between those two readings is where the whole thing goes wrong. The&lt;br&gt;
interviewer asked about a tool. The candidate defended an identity. And once&lt;br&gt;
you are defending an identity, the actual content of your answer stops&lt;br&gt;
mattering to you - which is a shame, because it still matters to the person&lt;br&gt;
across the table.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why the misread is reasonable
&lt;/h3&gt;

&lt;p&gt;It would be easy to say they were being oversensitive. I do not think that&lt;br&gt;
is fair, because the question genuinely has a charge on it now.&lt;/p&gt;

&lt;p&gt;"Do you use AI" in 2022 was small talk. Today it is a question people ask to&lt;br&gt;
find out which side you are on, and it gets asked from both directions.&lt;br&gt;
Somewhere there is an interviewer who wants to hear "no, I write everything&lt;br&gt;
myself" and somewhere there is another who wants to hear "yes, constantly,&lt;br&gt;
I ship three times faster". Both of those interviewers exist and neither of&lt;br&gt;
them is signposted.&lt;/p&gt;

&lt;p&gt;So the candidate is not paranoid. They are guessing which room they are&lt;br&gt;
standing in, under time pressure, with a job on the line. That is a real&lt;br&gt;
problem and it is worth naming rather than mocking.&lt;/p&gt;

&lt;p&gt;But guessing wrong has a cost, and the cost here was the whole answer.&lt;/p&gt;

&lt;h3&gt;
  
  
  The analogy argues against him
&lt;/h3&gt;

&lt;p&gt;This is the part I keep coming back to.&lt;/p&gt;

&lt;p&gt;Stove versus microwave is not old versus new. &lt;strong&gt;They are not the same&lt;br&gt;
appliance.&lt;/strong&gt; A microwave reheats things quickly and unevenly. A stove sears,&lt;br&gt;
reduces, browns, holds a temperature. Every professional kitchen has both,&lt;br&gt;
and nobody in one thinks the microwave is winning.&lt;/p&gt;

&lt;p&gt;So the analogy, chosen to prove that the interviewer was behind the times,&lt;br&gt;
quietly concedes the interviewer's point: what you actually want in a kitchen&lt;br&gt;
is somebody who knows which one this dish needs. That is precisely what the&lt;br&gt;
question was trying to find out.&lt;/p&gt;

&lt;p&gt;An analogy that feels like it ends the argument is worth checking twice. This&lt;br&gt;
one ends it in favour of the other person.&lt;/p&gt;

&lt;h3&gt;
  
  
  "The world moves forward" is a way of not answering
&lt;/h3&gt;

&lt;p&gt;The second half - "they will stop making stoves" - is an inevitability&lt;br&gt;
argument, and inevitability arguments have a particular smell in interviews.&lt;/p&gt;

&lt;p&gt;The question was about &lt;strong&gt;your practice&lt;/strong&gt;. The answer was about &lt;strong&gt;history's&lt;br&gt;
direction&lt;/strong&gt;. Those are not the same subject, and swapping one for the other&lt;br&gt;
is one of the oldest ways to avoid saying something specific.&lt;/p&gt;

&lt;p&gt;It also cannot be wrong, which is the problem. "Things will keep changing" is&lt;br&gt;
true in every possible world, so it tells the listener nothing about you. An&lt;br&gt;
interviewer is not collecting predictions. They are trying to work out what&lt;br&gt;
you will be like on a Tuesday when something breaks.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the boring answer would have sounded like
&lt;/h3&gt;

&lt;p&gt;Something like: "yes, daily. It writes most of the first draft. I read all of&lt;br&gt;
it, I am careful with anything touching auth or money, and I have been burned&lt;br&gt;
by it inventing a library function that did not exist, so I check the imports&lt;br&gt;
first now."&lt;/p&gt;

&lt;p&gt;That is not an impressive answer. It is specific, it admits a scar, and it&lt;br&gt;
shows a line. It would have taken twenty seconds and it answers the question&lt;br&gt;
that was actually asked.&lt;/p&gt;

&lt;p&gt;The instinct that specificity is weakness gets a lot of good engineers in&lt;br&gt;
trouble. In an interview, specificity is the entire product.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who can afford to fire back
&lt;/h3&gt;

&lt;p&gt;One more thing, and it is uncomfortable.&lt;/p&gt;

&lt;p&gt;Answering an interviewer with a rhetorical question is a status move, and&lt;br&gt;
status moves are priced. If you are senior, scarce, and the company needs you&lt;br&gt;
more than you need them, it reads as confidence and it often works. If you&lt;br&gt;
are not, the same words read as brittle.&lt;/p&gt;

&lt;p&gt;Nothing about that is fair. It is just how the room works, and it is worth&lt;br&gt;
knowing the price before you spend it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where the line actually is
&lt;/h3&gt;

&lt;p&gt;The line has quietly moved, and it is no longer usage.&lt;/p&gt;

&lt;p&gt;Nobody serious is being judged for using AI in 2026. What people are being&lt;br&gt;
judged on is where they put the check: what they read, what they refuse to&lt;br&gt;
ship without understanding, and whether they can tell when the output is&lt;br&gt;
confidently wrong.&lt;/p&gt;

&lt;p&gt;That is a much harder thing to interview for than yes or no, which is&lt;br&gt;
probably why interviewers keep reaching for the crude version of the&lt;br&gt;
question. If you get the crude version, answer the real one anyway. You will&lt;br&gt;
be the only candidate that day who does. :)&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>programming</category>
      <category>career</category>
    </item>
    <item>
      <title>Your AI Agent Has No Colleagues</title>
      <dc:creator>Fuyuki0</dc:creator>
      <pubDate>Sun, 13 Sep 2026 20:51:42 +0000</pubDate>
      <link>https://dev.to/fuyuki0/your-ai-agent-has-no-colleagues-514b</link>
      <guid>https://dev.to/fuyuki0/your-ai-agent-has-no-colleagues-514b</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;"The coordination of the builders is not direct. It is the work already done&lt;br&gt;
that directs and triggers the work that follows."&lt;/p&gt;

&lt;p&gt;— Pierre-Paul Grassé, describing termites, 1959&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  1. The Loop
&lt;/h2&gt;

&lt;p&gt;You have seen this. Every agent framework does it :)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; create_issue
  x 422 validation_error

&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; create_issue        &lt;span class="o"&gt;(&lt;/span&gt;retry&lt;span class="o"&gt;)&lt;/span&gt;
  x 422 validation_error

&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; create_issue        &lt;span class="o"&gt;(&lt;/span&gt;retry, arguments tweaked slightly&lt;span class="o"&gt;)&lt;/span&gt;
  x 422 validation_error
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three attempts. Three identical failures. Then it apologises to you, which&lt;br&gt;
somehow makes it worse.&lt;/p&gt;

&lt;p&gt;The instinct is to blame the model. But look at what it had to work with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;422 validation_error
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tell me, from that string, whether retrying is worth it.&lt;/p&gt;

&lt;p&gt;Is it a field renamed in last week's release, or a service having a bad ten&lt;br&gt;
minutes? Same six characters either way. In one case retrying is exactly right&lt;br&gt;
and works in thirty seconds. In the other you can retry until your budget is&lt;br&gt;
gone, and the real answer was "the field is called &lt;code&gt;content&lt;/code&gt; now, refresh your&lt;br&gt;
tool schema."&lt;/p&gt;

&lt;p&gt;The model has to guess. It guesses retry, because that is what nearly all the&lt;br&gt;
code it ever read does.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Why "don't retry blindly" in your system prompt does nothing
&lt;/h2&gt;

&lt;p&gt;The first instinct, once you notice this, is to write a rule.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;When a tool call fails, do not retry immediately.
Consider whether the failure is transient before trying again.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It sounds reasonable. It does approximately nothing, for a boring reason:&lt;br&gt;
&lt;strong&gt;the instruction does not contain the missing information either.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You have told the agent to consider whether the failure is transient. It still&lt;br&gt;
has no way to find out. You have asked it to make the same guess, more&lt;br&gt;
thoughtfully. On a hard task, under context pressure, it will guess retry&lt;br&gt;
again — and it will be right often enough that the behaviour never extinguishes.&lt;/p&gt;

&lt;p&gt;That last part is the trap. A retry that works occasionally, at unpredictable&lt;br&gt;
intervals, is a &lt;strong&gt;variable-ratio reinforcement schedule&lt;/strong&gt; — the same mechanism&lt;br&gt;
that makes slot machines difficult to walk away from. It is the schedule&lt;br&gt;
psychologists reach for when they want a behaviour to be maximally resistant to&lt;br&gt;
extinction. Your agent is on it. So are you, at 1am, hammering the same test.&lt;/p&gt;

&lt;p&gt;The temptation is to log the error and call it a trail. That does not work,&lt;br&gt;
because an error message is not a signal about what to &lt;em&gt;do&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;A useful trace needs three parts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────────────────────────────────────────────────────────┐
│  THE ANATOMY OF A USEFUL FAILURE TRACE                           │
├──────────────────────────────────────────────────────────────────┤
│  1. AN IDENTITY                                                  │
│     A stable id for "this exact failure", so two agents can      │
│     tell they hit the same thing. Not the raw string: that one   │
│     contains a request id and a timestamp and will never match   │
│     anything again.                                              │
├──────────────────────────────────────────────────────────────────┤
│  2. AN OUTCOME, NOT AN INTENTION                                 │
│     What the next agent tried, and whether it worked. "I         │
│     refreshed the schema" is worthless. "I refreshed the schema  │
│     and the call then succeeded" is the whole point.             │
├──────────────────────────────────────────────────────────────────┤
│  3. A DENOMINATOR                                                │
│     Successes too, or the failure rate is meaningless. 100       │
│     failures out of 200 calls is an outage. 100 out of a         │
│     million is a Tuesday.                                        │
└──────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Part 1 is fiddly and worth spelling out. These two are the same bug:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Repository 8823 rejected field body at 2026-09-11T14:02:11Z
Repository 41902 rejected field body at 2026-09-12T09:41:55Z
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Compare them raw and you have two unrelated incidents forever. So you normalise&lt;br&gt;
first — replace the parts that vary, keep the parts that mean something — and&lt;br&gt;
hash what is left together with the service and operation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;URL_RE&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;URL&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;UUID_RE&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;UUID&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;TIMESTAMP_RE&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;TS&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;LONG_NUMBER_RE&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;N&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both lines collapse to one shape. Now they are one thing you can count. It is&lt;br&gt;
also a good place to strip anything credential-shaped, since you are already&lt;br&gt;
walking the string with regexes and you very much do not want tokens in a&lt;br&gt;
shared log.&lt;/p&gt;

&lt;p&gt;And once you are counting, resist the urge to have a model score the result.&lt;br&gt;
Count it. If an action was tried 5 times and worked 5 times, that is 5/5 — but&lt;br&gt;
so is 117/124, and those are not equally trustworthy. A Wilson score lower&lt;br&gt;
bound folds sample size in for you: 5/5 scores about &lt;strong&gt;0.57&lt;/strong&gt;, 117/124 scores&lt;br&gt;
about &lt;strong&gt;0.89&lt;/strong&gt;. Ten floating point operations, no dependencies, and you can&lt;br&gt;
recompute it by hand when somebody asks where the number came from.&lt;/p&gt;

&lt;p&gt;When there is not enough evidence, return that. Not a guess with a low&lt;br&gt;
confidence bolted on — an actual "I don't know". Agents handle it fine.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. The question I cannot answer alone
&lt;/h2&gt;

&lt;p&gt;Here is the thing I keep coming back to, and cannot settle by thinking harder:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do different people's agent failures actually overlap? 🤔&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The theory says they should. We are all calling the same twenty MCP servers and&lt;br&gt;
the same dozen public APIs, and when GitHub renames a field it renames it for&lt;br&gt;
everyone at once. Your 422 on Tuesday and my 422 on Thursday are plausibly the&lt;br&gt;
same 422.&lt;/p&gt;

&lt;p&gt;But "obviously true" is where most wrong ideas live. It is equally plausible&lt;br&gt;
that the interesting failures are all local — your auth setup, my rate limit,&lt;br&gt;
their internal service — and that the shared surface is too thin for any of&lt;br&gt;
this to matter. A pheromone trail nobody else walks is just a smell.&lt;/p&gt;

&lt;p&gt;I do not know which world we are in. It is decidedly testable, and I do not&lt;br&gt;
think anyone has tested it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What failure does your agent keep rediscovering?&lt;/strong&gt; The specific one you
have explained to it four times, in four different sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Was it a failure only you could have hit&lt;/strong&gt;, or would anyone calling that
service have walked into it too? That is the whole question above, in one
concrete case.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What do you do about it now?&lt;/strong&gt; A line in the system prompt, a wrapper, a
note in the repo, or nothing at all and you just eat it every time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I am collecting answers to the middle one in particular. If enough people&lt;br&gt;
describe failures that turn out to be the same failure, that settles it.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Why can't we stop debugging when we know we should stop?</title>
      <dc:creator>Fuyuki0</dc:creator>
      <pubDate>Sat, 12 Sep 2026 14:52:01 +0000</pubDate>
      <link>https://dev.to/fuyuki0/why-cant-we-stop-debugging-when-we-know-we-should-stop-4kia</link>
      <guid>https://dev.to/fuyuki0/why-cant-we-stop-debugging-when-we-know-we-should-stop-4kia</guid>
      <description>&lt;p&gt;I fixed the bug at 11pm.&lt;/p&gt;

&lt;p&gt;I only know that because I checked the git log the next morning. The commit that made everything pass was at 23:04.&lt;/p&gt;

&lt;p&gt;I kept debugging until 2am anyway.&lt;/p&gt;

&lt;p&gt;So what was I doing for those three hours?&lt;/p&gt;

&lt;p&gt;Honestly... mostly rerunning the same tests.&lt;/p&gt;

&lt;p&gt;Reading the same 40 lines of code.&lt;/p&gt;

&lt;p&gt;Changing something.&lt;/p&gt;

&lt;p&gt;Changing it back.&lt;/p&gt;

&lt;p&gt;Refreshing a page that had already worked like six times.&lt;/p&gt;

&lt;p&gt;And somehow still thinking:&lt;/p&gt;

&lt;p&gt;“maybe this time.”&lt;/p&gt;

&lt;p&gt;I don't think I'm the only one who does this :(&lt;/p&gt;

&lt;h2&gt;
  
  
  The loop
&lt;/h2&gt;

&lt;p&gt;It usually goes something like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Something breaks&lt;/li&gt;
&lt;li&gt;You try the obvious fix&lt;/li&gt;
&lt;li&gt;It doesn't work&lt;/li&gt;
&lt;li&gt;You try basically the same fix again&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step 4 is the dangerous one lol.&lt;/p&gt;

&lt;p&gt;Not really a new idea. Just the same thing with one tiny change that you probably couldn't even explain if someone asked why you changed it.&lt;/p&gt;

&lt;p&gt;Then it fails.&lt;/p&gt;

&lt;p&gt;So you change another tiny thing.&lt;/p&gt;

&lt;p&gt;Run it again.&lt;/p&gt;

&lt;p&gt;Still fails.&lt;/p&gt;

&lt;p&gt;Again.&lt;/p&gt;

&lt;p&gt;I think sunk cost is a big part of it.&lt;/p&gt;

&lt;p&gt;Once you've already spent three hours on something, stopping feels like admitting those three hours were wasted.&lt;/p&gt;

&lt;p&gt;Continuing feels like maybe you can still “save” them.&lt;/p&gt;

&lt;p&gt;Which obviously makes no sense because the three hours are gone either way.&lt;/p&gt;

&lt;p&gt;But try telling yourself that at 1am when you're 100% sure the fix is &lt;strong&gt;&lt;em&gt;right there&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There's also this weird thing with debugging where sometimes repeating something actually does work.&lt;/p&gt;

&lt;p&gt;Maybe a cache expired.&lt;/p&gt;

&lt;p&gt;Maybe a deploy finally finished.&lt;/p&gt;

&lt;p&gt;Maybe some service restarted.&lt;/p&gt;

&lt;p&gt;So once in a while, retry number 4 magically works.&lt;/p&gt;

&lt;p&gt;And I think that trains your brain in the worst possible way.&lt;/p&gt;

&lt;p&gt;Like a slot machine, basically.&lt;/p&gt;

&lt;p&gt;Most attempts give you nothing, but every now and then you get rewarded, so your brain goes:&lt;/p&gt;

&lt;p&gt;“SEE?? ONE MORE TRY.”&lt;/p&gt;

&lt;p&gt;The other problem is that these two situations feel exactly the same when you're stuck:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This will work if I keep going.&lt;/p&gt;

&lt;p&gt;This is never going to work like this and I need another approach.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;From the inside, I genuinely can't tell the difference sometimes.&lt;/p&gt;

&lt;p&gt;Same frustration.&lt;/p&gt;

&lt;p&gt;Same tunnel vision.&lt;/p&gt;

&lt;p&gt;Same feeling that the answer is probably one stupid line away.&lt;/p&gt;

&lt;h2&gt;
  
  
  The thing that actually helps me
&lt;/h2&gt;

&lt;p&gt;It's not discipline.&lt;/p&gt;

&lt;p&gt;I've tried the whole “be disciplined and stop after ... minutes” thing.&lt;/p&gt;

&lt;p&gt;Works great for about a week :D&lt;/p&gt;

&lt;p&gt;The thing that helps the most is when someone else has already hit the exact same problem.&lt;/p&gt;

&lt;p&gt;My friend saying:&lt;/p&gt;

&lt;p&gt;“oh yeah, that's the schema cache. restart it.”&lt;/p&gt;

&lt;p&gt;And suddenly three hours of suffering disappears in one sentence.&lt;/p&gt;

&lt;p&gt;It's not even that they're smarter than you.&lt;/p&gt;

&lt;p&gt;They just already paid the price to learn that weird little piece of information.&lt;/p&gt;

&lt;p&gt;You didn't have to pay for it again.&lt;/p&gt;

&lt;p&gt;That's honestly why I think Stack Overflow was such an important thing for developers.&lt;/p&gt;

&lt;p&gt;Not only because it had answers.&lt;/p&gt;

&lt;p&gt;But because you could search some weird error message at 1am and find proof that another human being had already experienced the exact same pain.&lt;/p&gt;

&lt;p&gt;Sometimes that's enough to get you unstuck.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I've changed
&lt;/h2&gt;

&lt;p&gt;Nothing revolutionary.&lt;/p&gt;

&lt;p&gt;Two very small things.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A 25 minute timer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If I've been on the same bug for 25 minutes, I stop and write down what I've actually ruled out.&lt;/p&gt;

&lt;p&gt;And this is embarrassingly effective because sometimes I start writing and realise:&lt;/p&gt;

&lt;p&gt;“I haven't ruled out anything. I've just been running the same test for 25 minutes.”&lt;/p&gt;

&lt;p&gt;It's hard to write that sentence and then immediately run the test again lol.&lt;/p&gt;

&lt;p&gt;The second thing is just &lt;strong&gt;explaining the problem out loud&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Sometimes to another person.&lt;/p&gt;

&lt;p&gt;Sometimes to myself.&lt;/p&gt;

&lt;p&gt;Sometimes to absolutely nobody.&lt;/p&gt;

&lt;p&gt;I'm not even asking for help.&lt;/p&gt;

&lt;p&gt;I just explain what I think is happening.&lt;/p&gt;

&lt;p&gt;And halfway through the explanation I'll say something like:&lt;/p&gt;

&lt;p&gt;“so this function should receive X because—”&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;oh.&lt;/p&gt;

&lt;p&gt;There it is.&lt;/p&gt;

&lt;p&gt;Rubber duck debugging is stupidly real and I still don't fully understand why.&lt;/p&gt;

&lt;p&gt;None of this completely fixes the problem btw.&lt;/p&gt;

&lt;p&gt;I still had a 2am debugging session last month.&lt;/p&gt;

&lt;p&gt;But I think the difference now is that the gap between:&lt;/p&gt;

&lt;p&gt;“I'm stuck”&lt;/p&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;p&gt;“oh... I'm doing the thing again”&lt;/p&gt;

&lt;p&gt;has gotten smaller.&lt;/p&gt;

&lt;p&gt;And honestly, I think that gap is where most of the wasted hours go.&lt;/p&gt;

&lt;p&gt;I'm actually curious about this.&lt;/p&gt;

&lt;p&gt;I mean on the genuinely bad nights when you've been staring at the same function for two hours and your brain has completely stopped working.&lt;/p&gt;

&lt;p&gt;What do you actually do?&lt;/p&gt;

&lt;p&gt;I have a feeling the embarrassing answers are probably way more useful than the productivity advice we've all already read :D&lt;/p&gt;

</description>
      <category>mentalhealth</category>
      <category>discuss</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
