Note: This post is a draft.
One of the common differentiators I see between someone that I would label as a senior engineer and a junior engineer is the depth and bredth of their debugging toolbox. Generally when I think of a debugging toolbox I think of a collection of patterns that a developer may apply to resolve a difficult issue.
I think the framing of patterns here is key, no two problems that developers face will ever be the same, they usually are just slightly different that the same solution found the first time can't be implemented as-is to resolve the second issue. However, developers are often able to see the pattern from the first problem and learn how to apply it to solve the second, and third, and so on.