Back to articles

Article

Embracing the Maybe

A reflection on uncertainty in software engineering, why "it depends" is an honest answer, and how healthy teams build adaptable systems inside the maybe.

Software EngineeringLeadershipArchitectureDecision Making

People often think of software engineering as operating in absolutes.

Viewed through a microscope, that’s largely true. The code either compiles or it doesn’t. The test either passes or it fails. A request either succeeds or returns an error.

But zoom out.

From the macro level, software begins to take on a very different shape.

It stops being about code and starts becoming the byproduct of decision making.

Every feature, every architecture, every line of code is the result of decisions made by a series of different people-stakeholders, engineers, designers, product owners, executives. Each person contributes another piece to the whole, and almost every decision is made with one unavoidable limitation:

No one possesses complete information.

This isn’t a flaw in the people making the decisions. It’s simply the nature of software. Every decision is contextualized by circumstances that no single individual fully controls. Requirements evolve. Businesses change. Customers surprise us. Technology shifts beneath our feet. We are constantly making the best decision we can with the information available at the time.

Naturally, this isn’t an inherent problem. In fact, it’s one of the reasons software engineering remains so interesting. Trust, experience, communication, and good leadership all help reduce uncertainty. But they never eliminate it.

The question, then, becomes:

How does a team build great software when certainty is impossible?

If there were a perfect answer, software engineering would be far more uniform than it is today. It isn’t. Different organizations arrive at wildly different solutions while facing remarkably similar problems.

There are many ways to navigate uncertainty, but I want to focus on one idea that I believe is foundational.

Embrace the maybe.

Software engineering is beautiful because it mirrors the people building it.

Too often organizations spend enormous amounts of energy trying to force software engineering into something it isn’t. They chase certainty where none exists. They demand guarantees where only probabilities are available.

But that’s backwards.

Software engineers have become famous for answering difficult questions with the phrase:

“It depends.”

That answer is often interpreted as indecisiveness.

I think it’s one of the most honest phrases in our profession.

“It depends” is an acknowledgment that software exists within a changing system rather than a static one. It recognizes that good engineering isn’t about pretending every decision has one objectively correct answer. It’s about understanding the variables well enough to choose wisely despite uncertainty.

Eventually, the software begins to reflect that mindset.

When the engineers embrace “it depends,” the software begins operating through that same philosophy. It becomes adaptable instead of rigid. Evolvable instead of brittle. Honest instead of overconfident.

The faster a business embraces that reality, the healthier its software becomes.

Because certainty rarely builds enduring systems.

The willingness to responsibly live inside the “maybe” often does.

Need a senior Laravel partner for a high-stakes application?

Bring a sharp architectural eye into the room before another quarter disappears into fragile releases, slow delivery, or unclear technical direction.