Add instrumentation around critical functionality

This is part of the Semicolon&Sons Code Diary - consisting of lessons learned on the job. You're in the architecture category.

Last Updated: 2024-04-15

With mission critical flows in software (e.g. carrying out of COVID tests in a lab), it's critical to be any to debug issues here rapidly. Therefore enhanced instrumentation is justified.

This may mean logging in a server-side application. But in a mobile application, you might need something else.

In this case, I would have sent anonymized data to an API end-point for every attempted medical scan, along with some DB identifiers, and info about whether it succeeded or not.

That way, when doctors called us with reports of software problems, we'd have full info at our finger tips and not rely on their reports (which, since their expertise is elsewhere, tend to lack to precision needed for debugging - e.g. they say "it's not working" but they mean "1 in 10 don't work" or "there is network connectivity issues")