When I was fresh out of college I would jump at any such puzzle that was presented to me and would not sleep until I had solved it. I never stopped to think about the larger picture where that puzzle was embedded in, and if it actually required solving or if a more pragmatic solution was at hand and would lead to the same outcome.
Now that I have some years of experience in the industry, I realize that 80% of the "puzzles" I face at work are bullshit. They are usually complicated situations generated by organic and uncontrolled growth in codebase complexity that lead to horrible scenarios requiring a lot of brain power to solve. The thing is, if things had been more properly thought out, those situations would have not occurred in the first place, because the code would have a lot more sound architecture. But because it was allowed to grow without thought and refactoring, it now offers many "puzzles" that the younger people in the team don't even question at a more fundamental level.
Sorry for the cynicism but it's honestly the way I feel about most of the work I do these days. Too much in terms of stability, maintainability and soundness is sacrificed for performance and for pushing things out the door asap.