My martial arts instructor said yesterday, “You don’t approach an opponent thinking, ‘I’m going to use a jab hook cross!’ You get up there and you find the opening they give you.”
In programming, we shouldn’t approach a problem with a solution in mind. Study the problem, find its shape, and suit the solution to it. This can be tricky when we’re constantly learning, because whatever new move we’ve recently practiced will jump out at us as a good idea. As in martial arts, keeping the right distance from the problem and opening our minds to all modes of attack will bring success.