Custom Software Projects

Software observability: from an error message to an explanation

Connect software observability to real workflows using meaningful logs, metrics, traces, safe information handling and alerts with clear response ownership.

Colourful source code lines on a computer screen

A user says, “I pressed Save, but nothing happened.” Support repeats the action and the screen works normally. The server is running, the home page opens and no error notification has arrived. The user’s work may still be incomplete. Software observability is the arrangement for producing and using the information needed to investigate that situation without relying entirely on guesses.

The aim is not to create more charts or longer log files. It is to understand which operation departed from expectations, under what conditions and at which step. Engineers need to connect related events, while the business needs to understand the affected work. Without that preparation, each incident can become an exercise in adding the information that would have helped investigate it.

Start with the work the user needs to complete

An application being available does not mean it fulfils its purpose correctly. A quotation might save without reaching the customer. An order might appear in a list without entering the operations queue. Choose important journeys according to their business significance. Technical indicators become more useful when they connect to these journeys rather than existing as an isolated infrastructure view.

Describe the beginning, intermediate states and intended result of an important operation. Which steps should follow creation of a record? What must actually have happened when the interface reports success? If the application does not distinguish these stages, investigators may not know whether the failure occurred during input, persistence or a later transfer. The definition of completion needs to be clear.

This does not require detailed tracking of every movement in the application. Begin with workflows whose failure could stop work or produce incorrect information. Write down the questions an investigation must answer. Discuss the context needed to answer them during design, rather than assuming that useful evidence can always be reconstructed after the event.

Different signals answer different questions

Event logs can describe what happened at a particular moment. Metrics describe numerical behaviour over time. Traces help follow an operation through its stages. These forms of information do not need to replace one another. Used together, they can provide context that would be missing from a single source.

For example, a rising failure rate can show that a problem is spreading. A related event can explain why a particular attempt was rejected, while an operation trace can reveal where time was spent. A total error count may not identify an affected user; individual events alone may conceal the scale of the issue. Select the information according to the question being investigated.

Consistent naming matters. Investigation becomes harder if the same action is called quotation delivery in one place and message creation elsewhere without an explanation. Document the relationship between technical events and their business meaning. Someone joining the team should be able to understand the evidence without relying on the memory of the original developer.

Connect the parts of the same operation

An appropriate interaction identifier can connect records belonging to one attempt. A safe support reference shown to the user can help the team locate the relevant technical evidence. That reference does not need to contain a password, access credential or sensitive personal information. Define its scope and how it can be shared through the support process.

Consider a fictional booking application that creates a record, checks payment status and queues a notification after the user submits a form. If notification delivery is delayed, a bare “send failed” message is insufficient. Investigators need to identify the related booking attempt, whether another attempt occurred and the current state. The user should not have to reconstruct the entire technical sequence.

Time information also affects correlation. Handle clocks and time zones consistently across systems. An unexplained difference between the time reported by the business and the time in the records can lead to the wrong incident being examined. Asking for an approximate time and operation type can help support, without turning the user into a diagnostic specialist.

Collected information should not create another problem

Recording entire requests to make investigation easier can multiply sensitive information. Passwords, access credentials, payment details and unnecessary personal fields should not be written indiscriminately into logs. Decide which information is retained for which purpose, who may inspect it and when it is removed. Observability requires information governance as well as technical collection.

Design field selection and masking around the workflow. An error category and technical context may be sufficient without retaining the complete contents of a user’s note. Free-text fields can contain unexpected sensitive information. Where records are sent to an external service, assess the sharing arrangements and access model rather than assuming that diagnostic information has no privacy consequences.

Test the availability of the recording process itself. Evidence may be unavailable when it is most needed if collection depends entirely on the same failing resource. Also decide how the application behaves if recording fails. Retaining every detail can increase storage and processing demands. Manage the level of collection according to its purpose and check that the intended balance holds in practice.

Every alert needs an owner and a first action

Sending everyone a message whenever a chart changes is not an effective response model. Define what the alert represents, the condition that produces it and who evaluates it. The recipient should understand why it matters and what to check first. Repeated notifications through multiple channels may create more interruption without increasing the team’s ability to respond.

Consider signals close to the business outcome. An important transfer that remains incomplete or a queue whose oldest item keeps ageing may deserve investigation. Review thresholds against normal application behaviour. A planned overnight batch and an unexpected accumulation may look similar numerically but require different interpretations. Ignoring context and schedules can generate unnecessary alarms.

Review alert history. Which notifications required intervention, and which reflected explainable activity? Record decisions to change a threshold, remove a signal or add another check. A quiet monitoring system is not automatically evidence of a healthy application. The monitoring arrangement itself needs validation so the team knows that meaningful problems would become visible.

Build an incident timeline before choosing a cause

The initial task is to separate what is known from what is assumed. Put the user report, first technical warning, recent releases and connected-service behaviour onto a timeline where relevant. Distinguish findings, possible explanations and unanswered questions. Treating the first suggested explanation as established fact can narrow the investigation too early.

A recent release may be relevant, but timing alone does not establish causation. Data volume or a connected service may also have changed. Examine which explanation the available evidence supports. If a temporary measure is introduced, decide how its effect will be observed. A problem becoming less visible does not by itself establish that its underlying cause has been corrected.

Business communication belongs in the investigation. Explain the known impact, any temporary way of working and when the next update will be provided. If the cause remains uncertain, describe the investigation honestly instead of supplying a confident invented explanation. Users may need practical guidance for continuing their work sooner than they need the final technical account.

Link the analysis to an actionable improvement

Labels such as human error or server problem often provide little learning on their own. Ask how the condition became possible, why it was not detected earlier and why its effect became significant. If a setting was entered incorrectly, review the surrounding checks, visibility and recovery arrangements as well. The purpose is to understand a useful chain of conditions rather than assign one convenient label.

Give improvement actions an owner and a verification step. Test the scenario a new control is supposed to detect. Simplify a support form if the same essential context is repeatedly missing. Update responsibilities when alerts reach the wrong person. A large rewrite is not required after every incident; a small, well-targeted correction may address the practical issue more effectively.

Prioritise follow-up work through likely recurrence, business impact and the effort required. Marking every suggestion urgent weakens the team’s ability to follow through. Some actions may be immediate while others enter planned development. Record why a risk is deferred and what would prompt reconsideration so the choice remains visible instead of becoming accidental neglect.

Try the investigation path in a controlled exercise

A safe test failure can show whether the intended evidence is available. Check which alert appears, how clearly the relevant operation can be located and whether sensitive information is exposed. Choose conditions that do not disrupt production. Creating a failure is a means of evaluating the response path, rather than an objective in its own right.

Include the support perspective. Can the reference supplied by a user be found in the technical records? Can the resulting state be explained correctly to the business? Missing context discovered during the exercise can improve the design. Building these checks into a custom software project before launch supports everyday operation. A dashboard matters because its information answers a real question, not merely because it exists.

Keep the exercise result practical. Record the gap, the action and the person responsible, then repeat the relevant check after the correction. This also helps a new team member learn how an incident is investigated. A documented process becomes more credible when someone other than its author can follow it and reach a consistent explanation.

Frequently asked questions

Is server monitoring the same as observability?

Server monitoring is an important part of the picture, but it cannot establish by itself that a user’s task completed correctly. Application steps, failures and connected-service behaviour may also matter. The questions the team needs to answer should determine the information collected, rather than assuming that an infrastructure dashboard covers every relevant condition.

Should every user action be recorded?

There is no universal requirement to do so. Consider business purpose, sensitivity, cost and diagnostic need together. Unnecessary detail creates storage demands and information risk. A targeted arrangement can begin with critical workflows and expand when a clear investigation need appears. Collection should have an explainable purpose rather than being enabled simply because a tool permits it.

Do large volumes of logs guarantee an easy diagnosis?

No. Unrelated, inconsistent or difficult-to-search records can slow investigation. Useful timestamps, operation relationships and understandable fields matter. Test whether the collected evidence supports a realistic support scenario. A smaller set of relevant records may be more useful than a much larger collection that lacks the context needed to answer the question.

Should users see detailed technical error messages?

Give users an understandable explanation and a safe way to obtain help. Avoid exposing internal system details or sensitive information. If their record was saved safely, say so; if it was not, explain the appropriate next step. That is more useful than a vague failure message that leaves them unsure whether retrying will duplicate their work.

Does a small application need this approach?

The scope can remain modest, but understanding a failed important operation is valuable even in a small application. Consider the significance of the work before the number of users. Basic records, appropriate alerts and owned response steps may be a sufficient starting point. Expand the arrangement as needs develop rather than copying the complexity of an unrelated large system.

All articles