# Essay on cognitive load argues software should be designed to reduce mental friction
A new essay on minds.md, posted to Hacker News on 2024-12-22, argues that software quality should be judged less by fashionable terminology and more by a more basic measure: how much mental effort a developer needs to understand what the code is doing. The author’s premise is simple. If a change forces a programmer to keep too many facts in their head at once, the design is making work harder than it should.
The piece frames this idea as “cognitive load,” borrowing the term from psychology but using it in a practical engineering sense. In that usage, the question is not whether code looks elegant or follows a popular rule of thumb. The question is whether the code minimizes the amount of confusion required to complete a task. The author argues that confusion costs time and money, and that reducing it should be a central goal of design.
The essay uses a familiar set of examples to make the point. It contrasts a chain of controllers and inheritance layers with a simpler system built from fewer, deeper components. In the author’s telling, every extra layer that a developer has to inspect adds mental overhead, especially when a project has been left untouched for a long time. By comparison, a small number of modules with simple interfaces can be easier to pick back up after months away.
One of the essay’s more pointed claims is that some software advice has been simplified too far. Rather than treating short methods or many tiny classes as inherently good, the author argues for hiding complexity where possible and exposing only what users need. That is a more nuanced version of the old “keep it small” advice: not everything should be tiny if tiny pieces force readers to assemble the system in their heads.
The post also connects this idea to the AI era, saying developers will increasingly need to review code generated by models and should be even more alert to unnecessary complexity. That makes the argument timely, even if the examples are familiar. The underlying message is that clear software is not just easier to maintain; it is also easier to trust.
The essay’s strongest contribution is the way it recasts abstraction. Instead of treating abstraction as a vague virtue, it asks whether the interface lets readers do more with less mental effort. That lens is useful whether the reader is designing a new system or trying to clean up an old one.
Claim map
The supplied excerpt supports the claim that the essay defines cognitive load as the amount of confusion a developer feels while reading code, argues for deep modules with simple interfaces, and warns that unnecessary shallow abstractions increase the mental cost of software maintenance.


