Article

Stop Guessing. Start Looking.

What's the most expensive habit in software engineering? It isn't a fancy tool or a complex process. It's guessing. This article is about why the best engineering teams prioritise observation over speculation.

Pressure is a constant in software development. When a critical system fails, the impulse to find a solution is immense. We've all felt it. That adrenaline-fuelled rush to theorise and jump to conclusions about what might be wrong. It feels productive, like we're taking action. But it's often the most counterproductive thing we can do.

This is what separates good teams from great ones. Good teams have smart people who can come up with plausible theories. Great teams have disciplined engineers who know when to put their theories aside and just look.

Codiance Tech Blog - Stop Guessing Start Looking

David J. Agans' book, "Debugging", has a great rule for this: Quit Thinking and Look. It’s a simple idea that gets to the heart of good problem-solving. Agans points out that our brains are wired to see patterns and make connections. But in the logical world of code, these mental shortcuts can send us down the wrong path. Our intuition, which is so useful elsewhere, can become a liability.

Here's a scenario most developers might recognise. After a release, users start reporting errors. The team panics. They roll back the deployment, comb through every recent commit, and spend hours reviewing code changes line by line. Someone suggests it might be a caching issue. Someone else suspects a database migration gone wrong. Theories multiply. Eventually, after a day of this, someone thinks to check the environment config. The staging database connection string had been left in the production config file. The code was perfect. The deployment was fine. It was a single wrong value in a config that nobody thought to look at, because everyone was too busy guessing. Sound familiar?

This isn’t a rare edge case. It happens in development teams every day. The cost of guessing is huge. It's not just the wasted hours and delayed fixes. It's the unnecessary complexity, the new bugs introduced by poorly thought-out "solutions," and the loss of trust when a problem that was supposedly "fixed" comes back.

At Codiance, we’ve built our approach around what we call "Coded Brilliance". It's a commitment to practical, powerful software that just works. And a huge part of making things work is understanding why they break. This needs a culture of systematic observation, not heroic guesswork.

We saw this in action during a recent project with the Charity Commission for England and Wales (CCEW). They were having recurring failures in their critical ETL pipelines, which was disrupting essential reporting. The easy thing to do would have been to apply a quick patch or restart the process. To guess at a temporary fix to get the reports out. But that approach rarely solves the real problem.

Instead, our engineers followed the "Quit Thinking and Look" philosophy. They dived into the Azure-based platform, which included Synapse Analytics, Data Factory, and Azure SQL. By systematically observing the system as it was failing, they found the true root causes. There was a subtle schema drift happening in Synapse Link. A series of inconsistent permissions in Azure SQL were causing intermittent failures. You couldn't guess your way to these problems; they had to be found!

Speculation would have led to a series of frustrating, dead-end fixes. Observation led to a clear diagnosis. We didn't just patch the immediate symptom. We resolved the foundational issues, introduced new validation checkpoints to catch similar problems in the future, and, importantly, documented the entire solution to empower the Commission’s internal team. The result wasn't just a fix. It was restored stability, improved governance, and a big reduction in how often incidents happened.

The difference was discipline. It was the discipline to resist the easy answer, to keep an audit trail of every step, and to trust the data over our own assumptions. Great engineering teams invest in instrumentation, logging, and observability. They don't see it as a luxury, but as a fundamental necessity. They build systems that are designed to be understood, that make it easy to "check the plug" and question assumptions.

So, the next time you’re faced with a baffling bug, resist the urge to call a brainstorming session. Stop guessing. Start looking. The answer is almost always right there in front of you, waiting in a log file, a data stream, or a system metric. You just need to have the discipline to see it.