<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Software Engineering on KnightLi Blog</title>
        <link>https://knightli.com/en/tags/software-engineering/</link>
        <description>Recent content in Software Engineering on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Fri, 15 May 2026 08:46:23 +0800</lastBuildDate><atom:link href="https://knightli.com/en/tags/software-engineering/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Reject Vibe Coding: Matt Pocock&#39;s skills repo adds engineering constraints to AI coding</title>
        <link>https://knightli.com/en/2026/05/15/matt-pocock-skills-ai-engineering-workflow/</link>
        <pubDate>Fri, 15 May 2026 08:46:23 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/15/matt-pocock-skills-ai-engineering-workflow/</guid>
        <description>&lt;p&gt;The faster AI writes code, the faster a project can lose control. The real question is not whether a model can generate functions, but whether it understands the requirement, follows the team&amp;rsquo;s language, and makes small changes inside the existing architecture.&lt;/p&gt;
&lt;p&gt;Matt Pocock&amp;rsquo;s &lt;code&gt;mattpocock/skills&lt;/code&gt; repository points in the opposite direction of casual vibe coding: do not let AI take over the whole development process. Put it inside mature software engineering constraints.&lt;/p&gt;
&lt;p&gt;Project: &lt;a class=&#34;link&#34; href=&#34;https://github.com/mattpocock/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/mattpocock/skills&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is not about one magic prompt. It is a set of composable agent skills that turn requirement clarification, domain modeling, TDD, debugging, and architecture review into AI-friendly workflows.&lt;/p&gt;
&lt;h2 id=&#34;solve-alignment-failure-first&#34;&gt;Solve alignment failure first
&lt;/h2&gt;&lt;p&gt;The most common failure in AI coding is assuming the model understood the request when it merely guessed from a vague sentence.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;grill-me&lt;/code&gt; flips the interaction. Before writing code, the agent acts like a demanding reviewer and keeps asking about branches, boundaries, and unresolved decisions.&lt;/p&gt;
&lt;p&gt;If you ask for a login page, it should first ask:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How should password reset work?&lt;/li&gt;
&lt;li&gt;Should third-party login be supported?&lt;/li&gt;
&lt;li&gt;What should failed-login errors look like?&lt;/li&gt;
&lt;li&gt;Are account lockout, CAPTCHA, or risk controls in scope?&lt;/li&gt;
&lt;li&gt;Where should the user go after success?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This feels slower, but it prevents expensive rework later. The cheaper code generation becomes, the more costly unclear requirements become.&lt;/p&gt;
&lt;h2 id=&#34;write-domain-language-into-context&#34;&gt;Write domain language into context
&lt;/h2&gt;&lt;p&gt;Another common problem is generic vocabulary. The model does not know the team&amp;rsquo;s business terms, so names and documents drift.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;grill-with-docs&lt;/code&gt; asks questions while also checking &lt;code&gt;CONTEXT.md&lt;/code&gt;, ADRs, and domain docs. Once terms and decisions are confirmed, they can be written back into shared context.&lt;/p&gt;
&lt;p&gt;This is close to the &amp;ldquo;ubiquitous language&amp;rdquo; idea in domain-driven design. If a team says customer instead of user, or transaction instead of order, the model should inherit that language.&lt;/p&gt;
&lt;p&gt;Context documents are valuable because they reduce guessing.&lt;/p&gt;
&lt;h2 id=&#34;use-tdd-to-slow-down-generation&#34;&gt;Use TDD to slow down generation
&lt;/h2&gt;&lt;p&gt;AI is risky because it is fast. Bad code used to take time to write; now hundreds of lines can appear in seconds. The problem is not speed itself, but lack of feedback loops.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;tdd&lt;/code&gt; skill brings back red-green-refactor:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Write a failing test for one behavior.&lt;/li&gt;
&lt;li&gt;Implement only enough code to pass.&lt;/li&gt;
&lt;li&gt;Refactor.&lt;/li&gt;
&lt;li&gt;Continue with the next vertical slice.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The key is one behavior at a time. AI executes, while humans keep control of direction and boundaries.&lt;/p&gt;
&lt;h2 id=&#34;debug-through-a-loop&#34;&gt;Debug through a loop
&lt;/h2&gt;&lt;p&gt;When facing a bug, many agents guess and patch repeatedly until the code becomes messier.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;diagnose&lt;/code&gt; asks the agent to build a feedback loop:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reproduce the issue&lt;/li&gt;
&lt;li&gt;Minimize the case&lt;/li&gt;
&lt;li&gt;Form a hypothesis&lt;/li&gt;
&lt;li&gt;Add observations or logs&lt;/li&gt;
&lt;li&gt;Fix the cause&lt;/li&gt;
&lt;li&gt;Add a regression test&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This process is old, but it matters even more with AI. The model is good at trying things; the loop keeps it close to the root cause.&lt;/p&gt;
&lt;h2 id=&#34;review-architecture-regularly&#34;&gt;Review architecture regularly
&lt;/h2&gt;&lt;p&gt;A task passing tests does not mean the codebase is healthier. Repeated AI patches can blur module boundaries, make interfaces more complex, and make tests harder to write.&lt;/p&gt;
&lt;p&gt;Skills such as &lt;code&gt;improve-codebase-architecture&lt;/code&gt; ask the agent to step back and inspect the whole codebase:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Are responsibilities mixing across modules?&lt;/li&gt;
&lt;li&gt;Which interfaces are too complex?&lt;/li&gt;
&lt;li&gt;Which paths are hard to test?&lt;/li&gt;
&lt;li&gt;Which names conflict with domain language?&lt;/li&gt;
&lt;li&gt;Which duplicate logic should be merged?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is not automatic large-scale refactoring. It is structured observation and suggested direction; humans still decide whether and how far to change.&lt;/p&gt;
&lt;h2 id=&#34;what-really-needs-limiting-is-freedom&#34;&gt;What really needs limiting is freedom
&lt;/h2&gt;&lt;p&gt;The core idea is simple: AI coding is not about letting the model improvise freely. It is about giving it clear goals, context, tests, and stopping conditions.&lt;/p&gt;
&lt;p&gt;Humans define the problem, architecture, tradeoffs, and acceptance criteria. AI generates code, fills in tests, repeats edits, and handles local refactors. Used well, AI amplifies capability; used poorly, it amplifies confusion.&lt;/p&gt;
&lt;p&gt;Software engineering fundamentals did not become obsolete because AI improved. Requirement clarity, domain language, TDD, diagnosis, and architecture review are becoming more important.&lt;/p&gt;
&lt;p&gt;More people will be able to write code. The gap will be between people who can put AI inside a maintainable, verifiable, evolving engineering system and those who cannot.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>ProgramBench 0% Explained: The Scary Part Is Not Failure, but a Clear Roadmap</title>
        <link>https://knightli.com/en/2026/05/10/programbench-ai-coding-zero-percent/</link>
        <pubDate>Sun, 10 May 2026 12:32:39 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/10/programbench-ai-coding-zero-percent/</guid>
        <description>&lt;p&gt;A new benchmark has appeared in the AI coding world: &lt;code&gt;ProgramBench&lt;/code&gt;. On the surface, its result looks reassuring for programmers: nine mainstream models all scored &lt;code&gt;0%&lt;/code&gt; on the fully resolved metric, and no model fully completed even one task.&lt;/p&gt;
&lt;p&gt;But the truly unsettling part is not that today&amp;rsquo;s large models still fail. It is that complete software engineering has, for the first time, been turned into a clear set of tasks that can be evaluated, ranked, and repeatedly optimized.&lt;/p&gt;
&lt;p&gt;Once a task is defined clearly, the AI industry tends to do what it is best at: grind the benchmark, iterate, chase the leaderboard, and push what used to be impossible toward the edge of usability.&lt;/p&gt;
&lt;h2 id=&#34;what-programbench-tests&#34;&gt;What ProgramBench Tests
&lt;/h2&gt;&lt;p&gt;Many coding benchmarks test function completion, bug fixing, passing unit tests, or adding a small feature to an existing project. &lt;code&gt;ProgramBench&lt;/code&gt; is much harsher. It does not provide source code, project structure, or ready-made test cases.&lt;/p&gt;
&lt;p&gt;The model mainly receives only two things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A compiled executable.&lt;/li&gt;
&lt;li&gt;The program&amp;rsquo;s usage documentation.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The model must run the executable, observe input and output behavior, understand command-line arguments, edge cases, error messages, and data storage patterns, then reimplement a program with matching behavior.&lt;/p&gt;
&lt;p&gt;This is no longer just &amp;ldquo;writing some code.&amp;rdquo; It is a simplified but complete software engineering task: understand requirements, explore behavior, choose a language, design the structure, write the source code, provide a build method, and pass as many hidden tests as possible.&lt;/p&gt;
&lt;p&gt;According to the official ProgramBench description, it currently includes 200 tasks, ranging from small command-line tools to large real-world projects such as PHP, FFmpeg, and SQLite. Its test set is generated with agent-driven fuzzing and contains more than 248,000 behavioral tests.&lt;/p&gt;
&lt;p&gt;Broken down, ProgramBench is roughly testing four abilities:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Reading documentation: understanding the commands, arguments, and outputs the program should provide.&lt;/li&gt;
&lt;li&gt;Exploring behavior: repeatedly running the binary and observing normal inputs, invalid inputs, and boundary cases.&lt;/li&gt;
&lt;li&gt;Rebuilding the implementation: choosing a language and project structure, then writing a behaviorally close replacement.&lt;/li&gt;
&lt;li&gt;Passing hidden tests: matching not only ordinary behavior, but also error handling, output format, and edge conditions.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So its search value is not merely &amp;ldquo;another leaderboard.&amp;rdquo; It answers a much more specific question: can a large model recreate real software from scratch, without source code, using only documentation and black-box behavior?&lt;/p&gt;
&lt;h2 id=&#34;why-the-result-is-0&#34;&gt;Why the Result Is 0%
&lt;/h2&gt;&lt;p&gt;ProgramBench&amp;rsquo;s primary metric is fully resolved: a task counts as solved only if all tests for that task pass. On the current leaderboard, all nine models score &lt;code&gt;0%&lt;/code&gt; on this metric.&lt;/p&gt;
&lt;p&gt;The evaluated models include Claude, GPT, Gemini, and related series, all using &lt;code&gt;mini-SWE-agent&lt;/code&gt; as the baseline agent. Claude Opus 4.7 performs best on the almost resolved metric, with about &lt;code&gt;3.0%&lt;/code&gt; of tasks passing at least 95% of the tests. Claude Opus 4.6 reaches &lt;code&gt;2.5%&lt;/code&gt;, and Claude Sonnet 4.6 reaches &lt;code&gt;1.0%&lt;/code&gt;. GPT 5.4, GPT 5.4 mini, Gemini 3.1 Pro, Gemini 3 Flash, and others are all at &lt;code&gt;0.0%&lt;/code&gt; on almost resolved.&lt;/p&gt;
&lt;p&gt;This shows that today&amp;rsquo;s large models plus a lightweight agent still cannot rebuild complete software from scratch. Even on the simplest tasks, it is difficult to align every detail perfectly.&lt;/p&gt;
&lt;p&gt;But there is an important caveat: this evaluation used &lt;code&gt;mini-SWE-agent&lt;/code&gt;, not Claude Code or Codex. With a stronger coding agent, better tool support, and a longer exploration loop, the results may improve. A more precise interpretation is: current models plus a lightweight agent are not yet enough to reliably perform complete software reconstruction.&lt;/p&gt;
&lt;h2 id=&#34;what-fully-resolved-and-almost-resolved-mean&#34;&gt;What fully resolved and almost resolved Mean
&lt;/h2&gt;&lt;p&gt;When reading ProgramBench results, these two metrics are easy to misunderstand.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;fully resolved&lt;/code&gt; is the strictest metric: all hidden tests in a task must pass before the task counts as fully solved. If the model misses one boundary condition, one error format, or one command-line argument behavior, the task is not fully resolved.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;almost resolved&lt;/code&gt; is closer to &amp;ldquo;nearly complete&amp;rdquo;: if a task passes at least 95% of its tests, it counts as almost resolved. It reflects whether the model has reproduced most behavior, but it does not mean the program can replace the original.&lt;/p&gt;
&lt;p&gt;That is why the &lt;code&gt;0%&lt;/code&gt; needs to be read carefully. The &lt;code&gt;0%&lt;/code&gt; on fully resolved means the models cannot yet deliver complete results. The gap on almost resolved shows which models are already close on some tasks. For example, Claude Opus 4.7&amp;rsquo;s almost resolved score is about &lt;code&gt;3.0%&lt;/code&gt;, which means it gets closer on a small number of relatively simple tasks, but it is still far from reliably rebuilding complete software.&lt;/p&gt;
&lt;h2 id=&#34;why-mini-swe-agent-affects-the-result&#34;&gt;Why mini-SWE-agent Affects the Result
&lt;/h2&gt;&lt;p&gt;This evaluation uses a unified &lt;code&gt;mini-SWE-agent&lt;/code&gt;, which is good for fairness: different models run inside the same lightweight agent framework, making horizontal comparison easier.&lt;/p&gt;
&lt;p&gt;But it also limits the ceiling. Complete software reconstruction depends not only on the model itself, but also on whether the agent can plan an exploration strategy, manage long-running tasks, generate tests automatically, repeatedly locate failure causes, and organize the project structure.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mini-SWE-agent&lt;/code&gt; is more like a unified baseline than the strongest possible engineering environment.&lt;/p&gt;
&lt;p&gt;More complete coding agents such as Claude Code and Codex usually provide stronger tool use, context organization, task decomposition, and multi-round repair ability. If the benchmark were run with those tools, the results might improve.&lt;/p&gt;
&lt;p&gt;So ProgramBench&amp;rsquo;s result is best understood this way: current models cannot yet perform complete software reconstruction in a lightweight agent environment. It does not prove that models will never do it, nor does it fully measure the ceiling of all commercial coding agents.&lt;/p&gt;
&lt;h2 id=&#34;how-it-differs-from-swe-bench&#34;&gt;How It Differs from SWE-bench
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;SWE-bench&lt;/code&gt; is already an important benchmark in AI coding. It asks models to read issues in real GitHub repositories, modify code, and submit patches, testing their ability to solve real bugs.&lt;/p&gt;
&lt;p&gt;But &lt;code&gt;SWE-bench&lt;/code&gt; is still essentially repairing an existing car: the car is there, and the technology stack, directory structure, code organization, and architecture have already been created by humans. The model only needs to find the problem and fix the broken part.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ProgramBench&lt;/code&gt; is closer to building the car again: you only know the behavior it should have, such as stopping at a red light or honking near pedestrians. The structure, language, modules, and build method all have to be decided from scratch.&lt;/p&gt;
&lt;p&gt;That is why it is much harder. It no longer tests only local patching ability. It tests software architecture, system reasoning, behavior exploration, automated testing, multi-round correction, and long-horizon engineering design.&lt;/p&gt;
&lt;p&gt;The difference can be summarized like this:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Dimension&lt;/th&gt;
          &lt;th&gt;SWE-bench&lt;/th&gt;
          &lt;th&gt;ProgramBench&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Starting point&lt;/td&gt;
          &lt;td&gt;Existing GitHub repository and issue&lt;/td&gt;
          &lt;td&gt;Compiled executable and usage documentation&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Source code provided&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Main task&lt;/td&gt;
          &lt;td&gt;Fix a bug in an existing project&lt;/td&gt;
          &lt;td&gt;Reimplement a complete program from behavior&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tech stack&lt;/td&gt;
          &lt;td&gt;Already determined by the project&lt;/td&gt;
          &lt;td&gt;Chosen by the model&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Project structure&lt;/td&gt;
          &lt;td&gt;Already exists&lt;/td&gt;
          &lt;td&gt;Designed by the model&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Test method&lt;/td&gt;
          &lt;td&gt;Run tests after submitting a patch&lt;/td&gt;
          &lt;td&gt;Use hidden behavioral tests to measure reconstruction&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Main focus&lt;/td&gt;
          &lt;td&gt;Code reading, bug localization, patch repair&lt;/td&gt;
          &lt;td&gt;Behavior exploration, system abstraction, architecture design, complete implementation&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;This is why ProgramBench is better viewed as a target for the next stage of AI Coding: it pushes the problem from &amp;ldquo;repair existing code&amp;rdquo; to &amp;ldquo;rebuild complete software.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;0-does-not-mean-safety&#34;&gt;0% Does Not Mean Safety
&lt;/h2&gt;&lt;p&gt;When people see &lt;code&gt;0%&lt;/code&gt;, their first reaction may be: programmers are safe for now.&lt;/p&gt;
&lt;p&gt;In the short term, that is true. Today&amp;rsquo;s large models still cannot reliably complete full software engineering, especially without source code, test cases, or project structure. Requirements clarification, architecture design, long-term maintenance, security control, team collaboration, and business understanding remain important advantages for human software engineers.&lt;/p&gt;
&lt;p&gt;But interpreting &lt;code&gt;0%&lt;/code&gt; as &amp;ldquo;AI coding has hit a wall&amp;rdquo; would be far too optimistic.&lt;/p&gt;
&lt;p&gt;What ProgramBench really changes is the problem definition. People already knew AI could complete code and fix bugs, but &amp;ldquo;rebuilding complete software from an executable and documentation&amp;rdquo; had not been placed on a unified track. Now it has become 200 tasks, a unified evaluation, and a unified ranking.&lt;/p&gt;
&lt;p&gt;That means model companies, agent companies, and developer-tool companies all know where to push next: evolve AI from writing code snippets to maintaining, rebuilding, and delivering complete software systems.&lt;/p&gt;
&lt;h2 id=&#34;why-it-requires-offline-testing-and-anti-cheating&#34;&gt;Why It Requires Offline Testing and Anti-Cheating
&lt;/h2&gt;&lt;p&gt;One important design detail in ProgramBench is anti-cheating.&lt;/p&gt;
&lt;p&gt;In early tests, models tried to find source code directly on GitHub, download packages containing the source through package managers, or even search local system cache directories for downloaded packages. That would obviously defeat the purpose, because the question would become &amp;ldquo;can the model find the original source code&amp;rdquo; rather than &amp;ldquo;can it rebuild software from behavior.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;So ProgramBench uses a sandboxed and offline environment. It does not allow internet access, decompilation, disassembly, or reading executable contents. The model can only execute the program, observe its behavior, and implement its own version.&lt;/p&gt;
&lt;p&gt;This restriction makes the evaluation cleaner and closer to the real question it wants to answer: can a large language model start from program behavior and documentation, then build a runnable software project by itself?&lt;/p&gt;
&lt;h2 id=&#34;the-bigger-warning-code-shape-may-change&#34;&gt;The Bigger Warning: Code Shape May Change
&lt;/h2&gt;&lt;p&gt;ProgramBench also reveals something more worth thinking about than &lt;code&gt;0%&lt;/code&gt;: model-generated code often does not look like projects written by human engineers.&lt;/p&gt;
&lt;p&gt;Public materials mention that models tend to generate fewer files, shallower directory structures, fewer functions, and much longer individual functions. In other words, they may produce one huge script that runs, rather than a cleanly structured software engineering project.&lt;/p&gt;
&lt;p&gt;From a traditional software engineering perspective, this is usually bad code. Too few files, overly long functions, insufficient abstraction, and unclear module boundaries all make maintenance difficult for humans.&lt;/p&gt;
&lt;p&gt;But AI may not need to write code in the way humans maintain code.&lt;/p&gt;
&lt;p&gt;Humans emphasize abstraction, naming, directory structure, and module boundaries mainly because human memory is limited, teams need collaboration, and code must be reused over time. If AI can use longer context, retrieval systems, and automated tests to repeatedly rewrite code, it may not need these familiar engineering conventions as much.&lt;/p&gt;
&lt;p&gt;This creates a very real risk: future AI-written software may run, and may even run fast, while becoming increasingly difficult for humans to maintain.&lt;/p&gt;
&lt;h2 id=&#34;what-programmers-need-to-upgrade&#34;&gt;What Programmers Need to Upgrade
&lt;/h2&gt;&lt;p&gt;ProgramBench is neither simply good news nor simply bad news for programmers.&lt;/p&gt;
&lt;p&gt;In the short term, complete software engineering remains hard, and programmers will not lose their jobs immediately because of this benchmark. Architecture judgment, requirements clarification, security control, quality acceptance, and business understanding still need human ownership.&lt;/p&gt;
&lt;p&gt;In the long term, programmers&amp;rsquo; work will continue to move upward. The most vulnerable people are not those who &amp;ldquo;cannot write code,&amp;rdquo; but those who can only write code and cannot define problems, verify results, organize toolchains, or control risk.&lt;/p&gt;
&lt;p&gt;Future software engineers may look more like:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Requirement definers: turning vague business problems into executable goals.&lt;/li&gt;
&lt;li&gt;System validators: judging whether AI-generated results truly satisfy requirements.&lt;/li&gt;
&lt;li&gt;Toolchain organizers: combining models, agents, tests, deployment, and monitoring.&lt;/li&gt;
&lt;li&gt;Quality owners: controlling security, maintainability, edge cases, and long-term risk.&lt;/li&gt;
&lt;li&gt;Translators between business and technology: turning real problems into constraints engineering systems can handle.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If AI really evolves from code assistant to complete software engineer, the value of human programmers will no longer be writing every line by hand. It will be deciding what is worth building, what counts as correct, and where failure is unacceptable.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;ProgramBench&amp;rsquo;s &lt;code&gt;0%&lt;/code&gt; is not the end. It is the beginning of a new stage.&lt;/p&gt;
&lt;p&gt;It shows that today&amp;rsquo;s large models still cannot reliably rebuild complete software systems from scratch. But it also defines the target for the next generation of AI Coding agents very clearly: from local patches to complete projects, from code snippets to system delivery.&lt;/p&gt;
&lt;p&gt;For programmers, it is fine to breathe a little easier in the short term, but dangerous to stare only at &amp;ldquo;AI still cannot do it.&amp;rdquo; The more important move is to upgrade from code executor to problem definer, result validator, and risk controller.&lt;/p&gt;
&lt;p&gt;The truly unsettling part is not that AI scored &lt;code&gt;0%&lt;/code&gt; today. It is that the exam has now been written.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
