Over my career I have worked with individuals who were problem solving challenged.  Sometimes their critical thinking were in short supply.

I think that mentoring is the best way to teach these skills.  When a team member has a problem don't solve it for them.  Ask them questions that make them solve it themselves.

One of the questions that you can teach is to evaluate the resources that they have to indicate what the cause of the problem is.  They should start thinking about things like the list below.

  • Review production logs.  This is the quickest way to solve obvious problems.
  • Bring production data to the testing environment and debug
  • Do a mental code walk through inputting the known data elements.  Some times you can see where the problem is by matching the observed behavior to the flow of the code.
  • Reproduce the issue step by step.  It is hard to tell where your problem is if you don't know when it occurred.
  • Learn how to question the person that reported the issue.  They may have a clue that they didn't think to detail when they logged the problem.

Asking leading questions helps.  Questions like "Why do you think the error is in the data access layer" can help a developer to work through the problem.  After all, the role of an architect is to pass on what they know.  Part of that is your trouble shooting skills.  Be generous.