Supporting production code: Start with the simple things
A few months ago I wrote about my experiences supporting production code while working at uSwitch.
Since then I've been working on support for Neo4j customers and I've realised that there are a couple of other things to keep in mind while debugging production problems that I missed from the initial list.
Keep a clear head / Hold back your assumptions
The first is that it's very helpful to completely clear your head of any assumptions when looking at a problem.
I've got into the habit of pattern matching different error messages that I come across with root causes and while that's sometimes useful, often there are subtle differences which mean the root cause is different.
Although I still sometimes fall into the assumptions trap I've found that it helps to ask exactly what someone is trying to do rather than immediately trying to solve the problem.
Look for the simple things
Along with the assumptions another mistake I make is to imagine the most complicated version of events that could lead to a problem manifesting.
Sometimes this is the case but more frequently a configuration setting may have been misunderstood or a query poorly designed and the problem can be resolved more easily.
To stop myself making this mistake I have a rough flow chart in my head working down from simpler causes to more complicated ones for different problem areas.
As I said, I still do make assumptions and look for complicated reasons for problems but by keeping these two things in mind I think/hope I'm doing it less often than I used to!