On Imperfect Information
and the future of intellectual work
The future of all intellectual work is: operating under imperfect information.
Lately, I’ve noticed two theories on the future of AI/LLMs that are gaining popularity.
Artificial intelligence will become a sufficiently good replacement for (most) human intelligence
Software will become a commodity as the effective cost of producing code trends toward zero.
My view is narrower and subtly different. LLMs are a near-perfect replacement for action under (near-) perfect information. Software is only commoditized to the extent that you can provide an LLM with perfect operating instructions. That means clear goals, crisp constraints, complete context, and unambiguous success criteria. Cloning the Apple website is already easy because it’s fully observable and has relatively little complex logic behind the scenes. Cloning the Spotify personalization engine is hard unless you can clearly and completely articulate what it is, how it works, what it should optimize for, and how you’ll know it’s correct.
That distinction matters because most real work is not fully observable. Most real work is partially observable, expensive to validate, and full of uncertainty that can’t be eliminated. It can only be mitigated.
You can already see this in the canonical SWE workflow today. Engineers guide Claude Code to implement a new ticket or feature. The more perfect the engineer’s description, the more perfect the output. When the prompt is vague, the agent fills in gaps, makes assumptions, and drifts. The best engineers already realize this, and they spend a disproportionate amount of up-front time building guardrails for the agent. The agent isn’t magically developing judgment. It’s being handed a tighter operating environment.
That’s the split I keep coming back to. Execution under perfect information is getting cheap. Turning the real world into something close to perfect information was always the hard part.
“Imperfect information” includes both obvious cases and more subtle ones.
you don’t have access to the data
you could get the data, but it’s expensive (either in money or time)
you have a data point, but you don’t trust its precision
For example, suppose that someone quotes an odds estimate at ~40%, but if you’re honest, you think the real odds swing anywhere between 20% and 60%. The number exists, but confidence doesn’t. You still have to act.
I think the core human job shifts toward judgment under uncertainty. It means operating under partial information, dealing with expensive information, and deciding what to trust, what to verify, and what to do next.
Another way to describe being “good” at something is that you have better or more complete information than someone else, and you know how to act on it. For years, being good at coding often looked exactly like that. A lot of the differentiation came from informational advantage. It included patterns, tooling, library behavior, conventions, debugging instincts, system constraints, “how this codebase really works,” and which shortcuts are safe versus dangerous. LLMs dissolve a big chunk of that by making missing information cheap and fast to retrieve.
But dissolving informational advantage doesn’t dissolve performance differences. It shifts where those differences come from. If execution is cheap, the bottleneck becomes definition. If you can’t turn a messy problem into crisp criteria, the agent can’t save you. If you can, the agent amplifies you.
This suggests that, as a result of AI, the already-massive talent gap in software engineering will continue to widen.
There’s a persistent fiction that “mid-level” is a narrow band. In practice, mid-level covers a huge spread of capability. Even in the old world, you were handed a specific ticket and the information was relatively complete. Some people still did a worse job than others. They missed edge cases, implemented the wrong interpretation, and introduced unnecessary fragility. They shipped something that technically passed but didn’t actually match the real intent. Perfect information wasn’t enough to guarantee good outcomes.
Now imagine the new world where you’re expected to act optimally when perfect information is available, and most of your performance is evaluated under imperfect information because real projects are not fully spec’d, not fully observable, and not fully predictable. Truly elite engineers will distinguish themselves further. The differentiator becomes whether you can create near-perfect information from partial observability. Can you define what success is, constrain the problem correctly, and make good decisions when the inputs are incomplete?
This is the point that often gets missed in public discourse about AI and software engineering. People suppose the value of software trends to zero. I think that’s true only up to the extent that you can act perfectly upon perfect information, or manufacture near-perfect information out of the messy real world. The moment the task depends on judgment under uncertainty, software stops looking like a simple commodity and starts looking like an applied decision-making problem again.
This imperfect-information framing also explains why venture investor types tend to be comfortable with this world. They essentially always operate under imperfect or flawed information, and there is rarely a notion of perfect execution. There is only making marginally or moderately better decisions under uncertainty. That’s the whole job. Better calibration, better sizing of risk, better recognition of potential upside, better interpretation of weak signals, and better decisions with incomplete data.
It also lines up with the “engineers become managers of AIs” idea that has recently become mainstream. Managers operate at higher abstraction levels with greater uncertainty and more tradeoffs. They don’t get perfect inputs or perfect feedback. If engineers spend more of their day directing agents, specifying constraints, choosing tradeoffs, and defining success criteria, the job shifts toward that same shape. Higher abstraction, higher uncertainty, and more judgment.
If you can’t be trusted to make meaningful decisions under a moderate amount of uncertainty and risk, you’re at increased risk of replacement over time. Not necessarily because you’re less intelligent, but because your value is concentrated in the part of the workflow that can be reduced to perfect-information execution.
It’s useful to separate the LLM Era from the Information Era, where the advent of computers and technologies like Google changed how information was accessed and utilized. In the 80s, 90s, and earlier, it was highly valuable to know a lot of facts and be able to recall them on-demand. But as Google and other search engines became ubiquitous, they made recall cheap. It didn’t eliminate expertise, but it replaced a big chunk of “trivia advantage” -- a specific form of the information advantage I described earlier. Many are now portraying LLMs as an eventual replacement for the human intelligence layer, but my interpretation is that LLMs will replace human _execution_ more than they replace human intelligence.
With this in mind, the execution playbook becomes straightforward: hand off the perfect-information work to LLMs. All of the most valuable work will involve turning uncertainty into clarity and operating instructions. Get good at defining constraints, deciding what needs verification, and looking at every problem from multiple angles.
Execution is getting cheap. Judgment is still best left to humans.


