Why Good Thinking Starts by Changing the Problem, Not Solving It
Hatched by Kai Nguyen
May 11, 2026
9 min read
4 views
84%
The hidden trap in “trying everything”
What if the smartest way to solve a problem is not to search harder, but to make the problem impossible to change?
That sounds backwards at first. When we hear that a brute force algorithm tries all possible answers, it feels honest, even noble. No shortcuts, no assumptions, just complete coverage. But brute force has a secret cost: it treats the world as if every possibility must remain alive until the very end. It keeps the problem mutable. It allows the state of the search to be reshaped, copied, revised, and rechecked endlessly.
Now compare that with the other idea: some things cannot be changed after they are created. An immutable object keeps its identity fixed. A string in Python cannot be altered in place. If you want a different string, you make a new one. That property seems small and technical, but it points to a deeper discipline. Sometimes progress comes from refusing to let the object of your attention keep shifting under your feet.
These two ideas meet in a surprising place: the difference between searching for a solution and designing a space where solutions become easier to see. Brute force is what happens when you stay inside a mutable mess. Immutability is what becomes possible when you freeze the right parts of the problem and stop paying the price of endless revision.
Brute force is not just an algorithm, it is a mindset
Brute force is often described as the simplest algorithmic strategy: try all possible answers, then pick the best one. That is accurate, but incomplete. Brute force is also a way of thinking under uncertainty. It is what we do when we do not yet know which constraints matter, which variables are stable, or which transformations preserve meaning.
In that sense, brute force is the default response to a mutable world. If every part of the problem can change, then every possibility feels equally worth checking. You are not solving a puzzle so much as patrolling a moving landscape.
Consider a simple example: finding the best password by guessing every combination. The search space is enormous because each character position can vary freely. The problem is wildly mutable. You cannot hold onto a useful invariant, so you must rely on exhaustive trial. The same pattern appears in daily life. If you do not know what criteria define a good hire, every candidate interview becomes a brute force scan of personalities, experiences, and instincts. If you do not know what makes a product valuable, every feature request feels urgent.
Brute force becomes necessary when you have not yet discovered what can be held still.
This is why brute force often feels both reliable and miserable. Reliable, because it guarantees coverage. Miserable, because it confesses a lack of structure. It is a method of last resort, but also a diagnostic tool. When you are forced into brute force, the real problem may be that the system is too mutable to reason about cleanly.
Immutability is a way of buying certainty
An immutable object cannot be changed after it is created. That sounds restrictive, but it is actually liberating. When something cannot mutate, you gain confidence that its meaning will not shift between one line of code and the next. A string stays a string. A value stays trustworthy. You no longer need to wonder whether some other part of the program secretly altered it.
This matters because reasoning collapses when objects are allowed to change invisibly. If a value can be rewritten at any moment, every operation on it becomes conditional. You are not working with a thing, you are working with a rumor about a thing. Immutability turns rumor into fact.
The analogy reaches beyond programming. In writing, immutable definitions create clarity. In strategy, immutable priorities prevent organizations from whiplashing every week. In relationships, immutable commitments, such as honesty about goals or limits, reduce the need for constant renegotiation. The more a system allows hidden mutation, the more every decision must be revisited.
There is a deep connection here to efficient problem solving. The moment you can declare certain parts of the problem fixed, the search space shrinks. You can stop re-evaluating settled ground and focus only on the true unknowns. Immutability is not merely about safety. It is about reducing the number of worlds you have to keep alive in your head.
The real leap is not from brute force to intelligence, but from mutation to invariants
The usual story says that brute force is dumb and clever algorithms are smart. But that misses the real transition. The most important leap is not from stupidity to intelligence. It is from mutable chaos to stable invariants.
An invariant is a fact that stays true while other things change. Once you find one, brute force loses power. You no longer need to examine every answer, because you can eliminate huge regions of the search space at once. This is why strong algorithms often feel magical. They do not merely compute faster. They discover what does not need to be reconsidered.
Think about sorting numbers. A brute force approach to finding the smallest number among one million values might compare every value to every other value, or search blindly until the answer emerges. But if you maintain the invariant “the smallest seen so far,” the problem becomes trivial. You do not need to remember every candidate equally. You keep one fixed reference and update it only when necessary.
This is the hidden power of immutability in thinking. If some part of your model is stable, you can build around it. You stop asking, “What if this changes?” and start asking, “Given that this stays fixed, what follows?” That shift is the beginning of all real leverage.
Cleverness often means identifying the part of the problem that should never have been allowed to mutate in the first place.
In other words, brute force is not defeated by speed alone. It is defeated by structure. And structure depends on choosing the right things to treat as immutable.
A practical framework: freeze the truth, search the uncertainty
The most useful way to combine these ideas is to split any problem into two layers:
- Immutable truths: facts, constraints, definitions, or goals that should stay fixed.
- Mutable uncertainty: the region where options are still open and exploration is needed.
Brute force is what happens when you blur those layers together. You treat every part as uncertain, so every part must be searched. Good reasoning begins when you freeze the truths and only brute force the uncertainty that remains.
This framework applies in code, but also in life and decision making.
In programming
Suppose you are transforming text data. If you mutate the original string repeatedly, every intermediate step becomes a possible source of confusion. If instead you treat the original input as immutable and create new derived values, you preserve a clean reference point. Debugging becomes easier because you can trust the starting state.
In product design
If your goal is to increase retention, do not brute force every possible feature. First define the immutable truth: what user behavior actually constitutes retention? Once that is clear, the mutable space shrinks to the handful of actions that may move the metric.
In learning
If you are trying to solve a hard problem, do not brute force every formula you have ever seen. Fix the invariant you already know, such as a conservation law, a boundary condition, or a definition. Then explore only the unknown relationship. The fixed anchor turns a foggy field into a navigable map.
This is why good problem solvers are often conservative about definitions. They are not being pedantic. They are preventing the goal from mutating while the search is underway.
Why immutable thinking makes brute force less necessary
The deepest insight is that immutability is not just a property of objects. It is a design principle for cognition.
When you make assumptions explicit and stable, you reduce the need for exhaustive search. Every immutable constraint eliminates countless impossible worlds. Every fixed definition narrows the range of valid interpretations. Every unchanging reference point saves you from re-deriving the same conclusion again and again.
This is why people who are good at systems thinking tend to ask questions like:
- What is fixed here?
- What can change without breaking the system?
- Which variables are we accidentally treating as open when they should be settled?
- Which parts of this problem do we keep re-examining because we never defined them clearly?
These questions are not bureaucratic. They are anti-brute-force questions.
Imagine planning a trip. If your budget, dates, and destination are mutable, you will keep considering every possible itinerary forever. But if you fix the budget and dates, the space collapses. You can now reason sensibly. The trip becomes solvable not because travel got easier, but because the problem got less mutable.
The same is true for conflict. If a discussion keeps reopening the meaning of success, every argument becomes brute force negotiation. If the group can agree on a few immutable criteria, the conversation can focus on tradeoffs instead of endless redefinition.
A problem becomes harder not when it has more options, but when its boundaries keep moving.
That is why the best thinkers are often boundary setters. They know that precision is not the enemy of creativity. It is what makes creativity tractable.
Key Takeaways
- Look for the mutable parts of a problem first. If everything seems open, you may be paying brute force costs because nothing has been stabilized.
- Freeze definitions before searching solutions. Clear goals, constraints, and invariants shrink the search space dramatically.
- Treat immutability as a cognitive tool, not just a programming feature. Stable reference points make reasoning faster and less error prone.
- Use brute force as a diagnostic, not a destination. If you are forced to try everything, ask what hidden uncertainty is preventing structure.
- Ask what should never change. The fastest way to simplify a hard problem is to identify the variables that must stay fixed.
The strongest solutions are built on things that do not move
We usually praise flexibility, exploration, and openness, and rightly so. But there is a limit to how far openness can take you. At some point, progress requires firmness. A solver needs something to stand on. A system needs values that do not mutate midstream. A search needs boundaries.
Brute force and immutability are not opposites so much as complements. Brute force reveals the cost of not knowing what is fixed. Immutability shows how to stop paying that cost. Together, they point to a powerful principle: the best way to solve a problem is often to make fewer parts of it eligible to change.
That reframes intelligence itself. Intelligence is not simply the ability to try many possibilities. It is the ability to recognize which possibilities should never have been kept alive. The moment you preserve the right truths as immutable, the rest of the problem stops being a fog and starts becoming a path.
Sources
Hatch New Ideas with Glasp AI 🐣
Glasp AI allows you to hatch new ideas based on your curated content. Let's curate and create with Glasp AI :)
Start Hatching 🐣