In tech support circles there's a bunch of methodologies, but a common one is PAIR.
Probe, Analyze, Isolate, Resolve.
The first step is probing and gaining agreement - asking meaningful questions to get to the bottom line and then making sure the person understands you have understood and have the right problem in mind.
Many people spend a significant amount of their communication time failing to gain agreement on the actual problem, who was at fault, and how its going to be resolved - this is basic communication skills but many people are not given a framework to think about it and have to go through life getting screamed at, so they adopt a similar policy.
For programming, and other technicl troubleshooying, I think I'd add a step at the end of "Probe, Analyze, Isolate, Resolve"... Verify - verify that the actual problem was solved, or confirm the Resolve step if someone else is involved.
Mistakes and misunderstanding can happen throughout the process. A quick email or conversation regarding the resolution can work wonders.
Many people spend a significant amount of their communication time failing to gain agreement on the actual problem, who was at fault, and how its going to be resolved - this is basic communication skills but many people are not given a framework to think about it and have to go through life getting screamed at, so they adopt a similar policy.