Agreed. When I was in high school I wrote all the normal programs for the Apple ][ and it was fun. LoRes/HiRes graphics, toy calculations like interest, bubble sorts, etc.
Then our math teacher offered extra credit if we solved some puzzles. One was the "100 Lockers" puzzle. http://mathforum.org/library/drmath/view/56747.html
I immediately saw that I could write a program to solve it and so I did. Afterwards I was struck by how I could simulate physical processes in the computer. It was a real eyeopener for me because I had always been given assignments before and this was the first time I had applied programming to a problem that I had come across myself.
I was feeling pretty smug that I would be the only person to solve this puzzle. (It was a very small class in a small school and not very many people were even attempting the puzzles.) When the results were posted later in the week, I noticed that someone else had solved it also but his solution didn't have a printout attached. I couldn't see how he could have solved it by hand by simulating the opening and shutting like I did in my program so I asked him how he did it. "Easy" he said. "I just did the problem for 10 lockers and I saw the pattern of square numbers and added on the missing numbers."
That's when I learned that while brute force works and it sometimes the best approach, it doesn't have to be the only approach.
Almost everything I have done in programming since is somehow related to this incident. World building indeed.