<?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: Dron Bhattacharya</title>
    <description>The latest articles on DEV Community by Dron Bhattacharya (@dron).</description>
    <link>https://dev.to/dron</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%2F1044976%2F22797ba8-765e-4d71-b217-d234a87052e3.jpeg</url>
      <title>DEV Community: Dron Bhattacharya</title>
      <link>https://dev.to/dron</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dron"/>
    <language>en</language>
    <item>
      <title>Still leaving Claude Code on high effort for everything? It's not doing what you think</title>
      <dc:creator>Dron Bhattacharya</dc:creator>
      <pubDate>Sat, 26 Sep 2026 06:40:42 +0000</pubDate>
      <link>https://dev.to/dron/still-leaving-claude-code-on-high-effort-for-everything-its-not-doing-what-you-think-5do4</link>
      <guid>https://dev.to/dron/still-leaving-claude-code-on-high-effort-for-everything-its-not-doing-what-you-think-5do4</guid>
      <description>&lt;p&gt;Most people who use Claude Code a lot pick an effort level once and never change it. Usually it's something high, like one level below the maximum. Ask them why, and the honest answer is often: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It feels safer. I haven't actually measured it."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I haven't measured mine either. But I recently read Thariq Shihipar's post &lt;a href="https://claude.dev/blog/spending-your-effort/" rel="noopener noreferrer"&gt;Using Claude Code: Spending your effort&lt;/a&gt;. He ran the same tasks at each of Claude Code's five effort levels (&lt;code&gt;low&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt;, &lt;code&gt;high&lt;/code&gt;, &lt;code&gt;xhigh&lt;/code&gt; and &lt;code&gt;max&lt;/code&gt;) and looked at what actually changed.&lt;/p&gt;

&lt;p&gt;TL;DR: effort doesn't make Claude smarter. It changes how much Claude checks its own work, and how many decisions it makes without asking you.&lt;/p&gt;

&lt;p&gt;That sounds like more effort is always better. It isn't. Extra checking pays off on some tasks and just burns time and tokens on others. And when a task is unclear, more effort can make Claude confidently build the wrong thing.&lt;/p&gt;

&lt;p&gt;Here are the four findings that changed how I think about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Effort buys checking, not brains
&lt;/h2&gt;

&lt;p&gt;The clearest example in the post is an HTML sanitizer: code that strips out every way someone could sneak JavaScript into a page. The model was Fable 5.1, one of Anthropic's newest models, and it tried the task 5 times at each effort level.&lt;/p&gt;

&lt;p&gt;At &lt;code&gt;low&lt;/code&gt;, each attempt took about two minutes. Claude wrote the filter in roughly one pass, tested it on one hand-written page, and passed 1 time out of 5.&lt;/p&gt;

&lt;p&gt;At &lt;code&gt;xhigh&lt;/code&gt;, it passed 5 times out of 5. One high-effort run took about 33 minutes. Claude went after its own first draft like an attacker would, read the parser's source code, ran a standard XSS test suite, and then wrote a fuzzer on top of all that.&lt;/p&gt;

&lt;p&gt;It didn't get smarter. It got suspicious of itself.&lt;/p&gt;

&lt;p&gt;So here's how I think about it now: &lt;strong&gt;effort is mostly about how much Claude double-checks itself, and how many calls it makes on its own, before it hands the work back.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once you see it like that, running at almost-max all the time looks a bit silly. Some tasks need all that double-checking. A lot of them don't.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. It fixes missed edge cases, not wrong approaches
&lt;/h2&gt;

&lt;p&gt;The post has a chart that sorts every Fable 5.1 attempt by what went wrong. There are 370 attempts at &lt;code&gt;low&lt;/code&gt; on the left and 370 at &lt;code&gt;max&lt;/code&gt; on the right.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F72dizemy28a41sbpzbra.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F72dizemy28a41sbpzbra.png" alt="Waffle chart comparing Fable 5.1 attempts at low and max effort, colored by outcome" width="800" height="667"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Chart from Thariq Shihipar's post. Each square is one attempt. Green passed, purple missed an edge case, blue made the wrong call.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Most failures are one of two kinds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Missed an edge case.&lt;/strong&gt; The approach was right, but Claude didn't test enough. For example, its own tests didn't catch a bug.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Made the wrong call.&lt;/strong&gt; Claude got the task itself wrong. For example, it misread the requirement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Going from &lt;code&gt;low&lt;/code&gt; to &lt;code&gt;max&lt;/code&gt;, missed edge cases dropped by more than half, from 59 to 24. Wrong calls only dropped by about a fifth, from 133 to 107.&lt;/p&gt;

&lt;p&gt;That makes sense. More effort means more testing, and testing catches edge cases. But no amount of testing tells Claude it's solving the wrong problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  The one failure that went up
&lt;/h3&gt;

&lt;p&gt;One kind of wrong call actually went up: Claude picking the wrong meaning of an unclear task. At &lt;code&gt;low&lt;/code&gt; it happened 25 times. At &lt;code&gt;max&lt;/code&gt; it happened 47 times, almost double.&lt;/p&gt;

&lt;p&gt;Thariq hints at why earlier in the post: at higher effort, Claude "will also make more assumptions on my behalf." The longer it works on its own, the more it guesses what you meant, and some of those guesses are wrong. To be fair, it could also be that these mistakes were always there and just got easier to spot once the sloppier ones went away.&lt;/p&gt;

&lt;p&gt;Either way, if your task is fuzzy, more effort won't save you. A clearer task will.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. A good spec shrinks the gap
&lt;/h2&gt;

&lt;p&gt;He also tried some real builds on Opus 5.5. When he gave it a vague prompt to build a personal fitness and workout tracker app, the results were wildly different at each level. &lt;code&gt;low&lt;/code&gt; took about 1.5 minutes and gave him a log with a graph. &lt;code&gt;max&lt;/code&gt; took 67 minutes and threw in extras like a heat chart.&lt;/p&gt;

&lt;p&gt;Then he had Claude interview him first and turned his answers into a detailed spec. This time, every effort level built a fairly similar app. &lt;code&gt;low&lt;/code&gt; just got there in 16 minutes, while &lt;code&gt;max&lt;/code&gt; took 79. The spec filled in the gaps that extra effort had been filling before.&lt;/p&gt;

&lt;p&gt;That's why his go-to loop for new features looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start with a rough spec and have Claude interview you to fill it out.&lt;/li&gt;
&lt;li&gt;Build on &lt;code&gt;low&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Review it and iterate, still on &lt;code&gt;low&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Verify and test on &lt;code&gt;high&lt;/code&gt;, since that's where the missed edge cases from point 2 get caught.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How I actually use it
&lt;/h2&gt;

&lt;p&gt;My own habit is much less scientific than any of this.&lt;/p&gt;

&lt;p&gt;I keep effort on the lowest setting when I'm working alongside Claude and just want things done fast. When I hand it a task and walk away for a while, I turn it up.&lt;/p&gt;

&lt;p&gt;There's no data behind that. It just felt right: when I'm sitting there, I'm the one checking the output, so I'd rather have quick turns. When I'm gone, nobody is checking, so Claude might as well do it.&lt;/p&gt;

&lt;p&gt;Reading the post, I noticed it lines up with something Thariq says: the right level depends on how much you want to stay in the loop. I had the right instinct and no evidence. The post gave me the evidence, and one blind spot I hadn't noticed.&lt;/p&gt;

&lt;p&gt;Points 2 and 3 are changing one thing for me: before I walk away, I'm going to let Claude ask its questions first. Otherwise I'm leaving it alone on a long run, and going by that data, that's exactly when it's more likely to guess wrong about what I meant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Effort isn't a quality dial you set once and forget. It decides how much Claude checks its own work, and how many calls it makes without you.&lt;/p&gt;

&lt;p&gt;So match it to the task:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;More effort helps most&lt;/strong&gt; when a task is full of hidden edge cases, like security or hardware work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It helps least&lt;/strong&gt; when the task itself is unclear. A better spec does more there than a higher effort setting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can switch levels mid-conversation with &lt;code&gt;/effort&lt;/code&gt;, and it doesn't break the prompt cache. So there's no real reason to leave it on one setting.&lt;/p&gt;

&lt;p&gt;If you use Claude a lot, the &lt;a href="https://claude.dev/blog/spending-your-effort/" rel="noopener noreferrer"&gt;original post&lt;/a&gt; is worth reading. It has animated versions of the charts I talked about here.&lt;/p&gt;

&lt;p&gt;If you've ever compared two effort levels on the same task, share your findings in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>productivity</category>
    </item>
    <item>
      <title>R2-Score Explained</title>
      <dc:creator>Dron Bhattacharya</dc:creator>
      <pubDate>Fri, 13 Feb 2026 04:14:43 +0000</pubDate>
      <link>https://dev.to/dron/r2-score-explained-2jb2</link>
      <guid>https://dev.to/dron/r2-score-explained-2jb2</guid>
      <description>&lt;h2&gt;
  
  
  Learning Outcomes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Define the R2-score and its role in regression analysis&lt;/li&gt;
&lt;li&gt;Interpret numerical R2 values to assess model fit&lt;/li&gt;
&lt;li&gt;Identify specific scenarios where R2 is helpful or misleading.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why do we need R2-score?
&lt;/h2&gt;

&lt;p&gt;Imagine we are asked to guess the CO2 emissions of a car we have never seen. Without any data (eg. engine size, fuel consumption), our safest bet is to guess the average of all known cars. Which means, for all cars we always predict the mean CO2 emission.&lt;/p&gt;

&lt;p&gt;But can prediction be better than the mean? Yes&lt;/p&gt;

&lt;p&gt;We can build a linear regression model which uses fuel consumption as a feature to predict the CO2 emissions. Now our predictions are much closer to the actual values than just guessing the mean!&lt;/p&gt;

&lt;p&gt;But how can we quantify how much it has improved with respect to the mean? This is exactly what the R2-score tells us.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A score of 1.0 indicates a perfect fit, where every data point sits exactly on the regression line. Conversely, a score of 0.0 suggests that the model is no better at predicting the outcome than simply guessing the average value every single time.  And if the model is somehow worse than guessing the average, R2-score becomes negative.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Formula
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;R² = 1 - (Variance remaining with model / Total variance)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Total Variance = How spread out the actual values are from their mean

&lt;ul&gt;
&lt;li&gt;Squared differences: (actual - mean)²&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Variance Remaining with Model = How spread out the prediction errors are

&lt;ul&gt;
&lt;li&gt;Squared errors: (actual - predicted)²&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How to interpret R2-score?
&lt;/h2&gt;

&lt;p&gt;To truly grasp the R2-score, we must understand Variance. Variance measures how far the data points are "spread out" from the mean. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Let's assume that we got R2-score=0.73 using Engine-size as a feature to predict CO2.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What does this mean? &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It means, that the model was able to capture 73% of the influence of all the features that makes the target variable change. The other 27% of the uncaptured influence can be other features like fuel consumption, number of cylinders or fuel type. So if there is a change in the target variable caused by this 27% of left out influence, our model will not be able to predict that.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From that statement we can also infer that the feature Engine-size has 73% influence on the target variable CO2 emission&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When to use R2-score and what are its limitations?
&lt;/h2&gt;

&lt;p&gt;The R2 score is a fantastic tool for comparing different models on the same dataset. We can quickly see if "Fuel Consumption" is a stronger predictor than "Engine Size". If Model A has an R2 of 0.92 and Model B has 0.75, Model A is the clear winner.&lt;/p&gt;

&lt;p&gt;But note that R2 is not suitable for comparing models across different datasets.&lt;/p&gt;

&lt;p&gt;Can we use R2 score for Non-Linear models? While R2 can be technically calculated for non-linear regression, it is fundamentally designed for linear models and may not accurately reflect the fit of non-linear models, making other metrics more appropriate. &lt;/p&gt;

&lt;p&gt;Another very important thing to remember is that a high R2 does not guarantee that the model is accurate enough for real-world use. It is a relative measure, not an absolute one. The model might explain 99% of the variance, but if the remaining 1% results in an RSME of ±500 tons of CO2, the model might still be useless.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;While R2 tells us how well the model fits the trend, RMSE tells us how big the actual error is, in actual units.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;The R2 score measures how much better a model is compared to a "dumb" baseline that just guesses the average. A score of 0 means no value is added; a negative score means things got worse and a score between 0 and 1  means the model accounts for variance better than the average.&lt;/li&gt;
&lt;li&gt;Think of R2 as a percentage of the data's "wiggle" that a model understands. If R2 is 0.80, the model captures 80% of the reasons why the target variable changes.&lt;/li&gt;
&lt;li&gt;Never rely on R2 alone. It tells about correlation and fit, but not about prediction precision. Always validate high scores with error metrics like RMSE to ensure the model is practical.&lt;/li&gt;
&lt;li&gt;High R2 on training data doesn't guarantee good predictions outside the data range.&lt;/li&gt;
&lt;li&gt;R2-Score works best for linear models.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Review Questions
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;If a model has an R2 score of -0.5, what does that imply about its predictive power compared to a simple mean?&lt;/li&gt;
&lt;li&gt;Why is an R2 of 1.0 often a red flag for "overfitting" in real-world data?&lt;/li&gt;
&lt;li&gt;Why might a model with a high R2 still be dangerous to deploy in a high-stakes environment (like healthcare)?&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>datascience</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
