Control What You Can Control: The 60% Decision Framework for Frontend Devs
Kim Fajardo
Kim Fajardo
March 6, 20264 min read

Control What You Can Control: The 60% Decision Framework for Frontend Devs

In front end development, we are often paralyzed by the pursuit of the "perfect" implementation. We spend hours debating state management libraries, CSS in JS vs. Tailwind, or the exact structure of a design system before writing a single line of production code. We wait for 100 percent certainty because we fear the refactor.

front-endmindsetprogressperspectiveaccomplishment


Minimalist developer workspace

However, in a professional environment, especially in freelance development where velocity is a primary metric of success, perfectionism is a liability.

This year, I have adopted a decision making framework designed to maximize output and minimize cognitive load.

My mantra is simple: control what you can control. If there is a variable and I know how the situation changes at roughly 60 percent accuracy, I make the decision right away.

The Cost of 100 Percent Certainty

The gap between 60 percent certainty and 100 percent certainty is where most projects go to die.

Decision crossroads illustration

That final 40 percent of information usually takes 80 percent of the time to acquire. By the time you have every requirement mapped out and every edge case accounted for, the market has shifted, the client's needs have evolved, or the project momentum has stalled.

By making the decision at 60 percent accuracy, you are not being reckless; you are being efficient. You are acknowledging that software is malleable. Code can be refactored, architecture can be reshaped, and patterns can evolve.

1. Architectural Agency

In React or Next.js development, we often over engineer for a future that never arrives. We build complex abstractions to solve problems we do not have yet.

image

The 60 Percent Application:
If I understand the core data requirements of a component with 60 percent clarity, I build it now using the simplest, most modular pattern available. I control the immediate quality, the type safety, and the legibility. I do not let the remaining 40 percent of unknown future requirements prevent me from shipping the 60 percent I know today.

Instead of predicting every possible edge case, I design for change. Clear boundaries, small components, and explicit data flow give me enough flexibility to adapt when the unknowns finally reveal themselves.

2. Eliminating Technical Friction

Technical debt is rarely the result of a single bad decision. It is usually the result of ignored variables.

Technical debt bomb illustration

We see a component getting "messy" or a utility function becoming too complex, but we wait for "the right time" to fix it. We tell ourselves it will be a future refactor, a future ticket, a future sprint.

The 60 Percent Application:
The moment I am 60 percent sure that a specific pattern is failing or a piece of logic is becoming a bottleneck, I act. I do not wait for a sprint review or a formal refactor ticket. I resolve the variable immediately, at a reasonable scope.

Sometimes that means extracting a hook, splitting a component, or deleting an unnecessary abstraction. Decisiveness at the 60 percent mark prevents the rot from spreading through the rest of the codebase.

Velocity as a Senior Trait

Junior developers wait to be told exactly what to build. Senior developers identify the variables, assess the risk, and move the project forward despite ambiguity.

DevOps feedback loop diagram

When you move at 60 percent accuracy, you create a feedback loop. Shipping an "imperfect" but functional version lets you see how the code behaves in the browser, how users interact with the UI, and where the real bottlenecks are.

That real world data is infinitely more valuable than another hour spent in theoretical planning.

Senior level velocity is not about rushing. It is about understanding that decisions create information. The faster you ship something real, the faster you learn what actually matters.

Conclusion

Control what you can control.

You cannot control changing client demands or the rapid evolution of web frameworks. You cannot control shifting priorities inside a company or the sudden arrival of a new JavaScript meta framework.

You can, however, control your ability to make a decision and execute.

If you are staring at a problem and you have a 60 percent read on the solution, stop chasing perfect information. Make the decision. Control the variable. Ship the code.

Was this helpful?