<?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: KYUNGHWAN KIM</title>
    <description>The latest articles on DEV Community by KYUNGHWAN KIM (@kkhdevs).</description>
    <link>https://dev.clauneck.workers.dev/kkhdevs</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%2F3994880%2F6d96ccce-2886-4a28-b460-1c0c500741bc.png</url>
      <title>DEV Community: KYUNGHWAN KIM</title>
      <link>https://dev.clauneck.workers.dev/kkhdevs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.clauneck.workers.dev/feed/kkhdevs"/>
    <language>en</language>
    <item>
      <title>The half of software that didn't get cheaper</title>
      <dc:creator>KYUNGHWAN KIM</dc:creator>
      <pubDate>Tue, 23 Jun 2026 23:37:51 +0000</pubDate>
      <link>https://dev.clauneck.workers.dev/kkhdevs/the-half-of-software-that-didnt-get-cheaper-3mpi</link>
      <guid>https://dev.clauneck.workers.dev/kkhdevs/the-half-of-software-that-didnt-get-cheaper-3mpi</guid>
      <description>&lt;p&gt;Something flipped this year, and most of the conversation is still pointed at the wrong half of it.&lt;/p&gt;

&lt;p&gt;The cost of &lt;em&gt;producing&lt;/em&gt; code collapsed. A feature that used to eat a day now takes an hour. We all feel it. What almost nobody is pricing in is that the cost of the other half — understanding what the code does and being sure it's right — didn't move at all. If anything, it went up.&lt;/p&gt;

&lt;p&gt;That's the whole thesis: writing got cheap, reading and trusting did not. And that gap, not the speed of generation, is the thing that now decides whether you can actually ship.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why reading got harder, not easier&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When a teammate opens a pull request, every line carries intent. You can ask "why did you do this?" and get a real answer, because a person made a decision there. You review against that intent.&lt;/p&gt;

&lt;p&gt;Generated code has no intent behind any single line. It's locally plausible everywhere — each line looks like something a competent developer might write — but there's no reasoning underneath to lean on. So you can't review it the way you review a human diff. You can't ask the author why, because there was no author and no why. You're left checking behavior directly, which is slower and far less forgiving.&lt;/p&gt;

&lt;p&gt;This is also why the line-by-line diff, the unit we've reviewed software in for twenty years, quietly stopped working. The diff assumes each changed line was a human choice worth scrutinizing. When the lines are generated, the diff tells you &lt;em&gt;what&lt;/em&gt; changed but nothing about &lt;em&gt;where the risk is&lt;/em&gt;. The dangerous failures aren't in the lines that changed — they're in how those changes interact with everything that didn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The bottleneck moved from typing to judging&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For most of the history of this craft, the scarce skill was production: can you build the thing. That's no longer scarce. The&lt;br&gt;
scarce skill is now judgment: can you look at a working-looking pile of code and tell whether it's actually correct.&lt;/p&gt;

&lt;p&gt;And the surveys keep drawing the same shape. Reviewers rate AI-assisted code highly at review time — clean, readable, idiomatic. Then it ships, and incident counts go up, senior engineers spend more time firefighting, and a meaningful chunk of that code needs significant rework. "Looks reviewed" and "is correct" came apart. Readability — the thing the code optimizes for — is exactly what lowers a reviewer's guard. Rough code makes you slow down; beautiful code makes you sign off on behavior you never checked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The imbalance nobody's fixing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's what bothers me most. We spent a year building incredible tools for the half that got cheap: autocomplete, agents, parallel PRs, generate-more-of-everything. We built almost nothing for the half that stayed expensive.&lt;/p&gt;

&lt;p&gt;Everyone now has a way to produce more code. Almost no one has a way to get &lt;em&gt;better at judging&lt;/em&gt; it. There's no gym for the skill that suddenly matters most. You're expected to develop it by accident, in production, on code you didn't write — which is the worst possible place to learn it.&lt;/p&gt;

&lt;p&gt;That asymmetry is the gap I keep coming back to, and it's the reason I'm building theloupe.dev: a place to practice the half&lt;br&gt;
that didn't get cheaper — reading code you didn't write and deciding, with reasons, whether it's actually right.&lt;/p&gt;

&lt;p&gt;I'll get into how you even practice that — how you make something feel like a real production failure instead of a toy — in the next post. For now I just want to put the thesis down plainly: the cost of writing fell off a cliff, the cost of being sure didn't, and we've been building almost entirely for the wrong one.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>claude</category>
    </item>
    <item>
      <title>Why I'm building a place to practice catching AI's bugs</title>
      <dc:creator>KYUNGHWAN KIM</dc:creator>
      <pubDate>Sun, 21 Jun 2026 05:15:58 +0000</pubDate>
      <link>https://dev.clauneck.workers.dev/kkhdevs/why-im-building-a-place-to-practice-catching-ais-bugs-1p1a</link>
      <guid>https://dev.clauneck.workers.dev/kkhdevs/why-im-building-a-place-to-practice-catching-ais-bugs-1p1a</guid>
      <description>&lt;p&gt;Two moments made me start building Loupe. Neither was some grand realization — they were just things that kept happening until I couldn't ignore them.&lt;/p&gt;

&lt;p&gt;The first happened several times a day. I'd hand a feature to my AI coding agent — Claude Code, Codex, whichever — and minutes later it would come back: done, tests passing. Green&lt;br&gt;
  checkmarks everywhere. But when I actually read what it had written, I kept noticing the same thing: the tests weren't written to check the feature. They were written to pass.&lt;br&gt;
  They cleared the bar, let the agent declare victory, and moved on. The code ran. The demo worked. Whether it was actually correct was a separate question — and nobody, human or&lt;br&gt;
  machine, had bothered to ask it.&lt;/p&gt;

&lt;p&gt;The second happened in a meeting. A teammate and I agreed to build a specific feature. Some time later, they told me it was done. No docs, no walkthrough, just "done." So I asked&lt;br&gt;
  the most basic questions I could think of. How many endpoints does it have? What happens in this edge case? Silence. They couldn't answer. The feature was "finished," and the&lt;br&gt;
  person who shipped it couldn't describe what they'd shipped.&lt;/p&gt;

&lt;p&gt;Both times, the exact same thought hit me: we're about to put this in front of real users, and not one person has actually verified it.&lt;/p&gt;

&lt;p&gt;I couldn't let it go, because it isn't a one-off — it's the shape of how we build now. Writing code became almost free; AI produces it in seconds. But reading code, understanding&lt;br&gt;
  it, and being able to say with confidence "yes, this is correct" didn't get any easier. If anything we do it less than we used to, because "the tests pass" feels like permission&lt;br&gt;
  to stop looking. The cheaper generation gets, the more code flows past unread.&lt;/p&gt;

&lt;p&gt;And the failures from that gap aren't loud. A crash you catch instantly. The dangerous bug is the one that runs perfectly and just returns the wrong number — the refund that's&lt;br&gt;
  slightly too large, the query that quietly drops a row, the check that never actually runs. It passes the test. It demos fine. It's wrong. And it ships, because everything looked&lt;br&gt;
  green.&lt;/p&gt;

&lt;p&gt;So I'm building Loupe: a place to practice the one skill all of this quietly demands and almost nobody trains. You get real, AI-written code that runs and passes its tests — and&lt;br&gt;
  your job is to find the part that's quietly wrong. Not to write it faster. To read it and catch what everyone else waved through.&lt;/p&gt;

&lt;p&gt;Because "it runs" and "it's right" are not the same sentence. Someone still has to know the difference — and I'd like more of us to be that someone.&lt;/p&gt;

&lt;p&gt;This is the first post in a series where I'll build this in the open: the decisions, the mistakes, the early users, the real bugs. Follow along if that's your kind of problem. →&lt;br&gt;
  theloupe.dev&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>webdev</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
