Solving a problem in chess uses the same processes as simplifying an application, or figuring out (or writing) music. It's an extension of the same ability.
Just like programming and music, if you get too complex the problem owns you. If you keep it simple, the solution can be elegant and really stifle (and frustrate) your opponent.
There's nothing like a totally unexpected sacrifice to really bug one's opponents eyes out, wind their time clock down and perhaps request a draw. (Hoping you'll accept, of course!)