For me there are two parts:
One part is about solving problems. There aren't many things that are as satisfying as finally getting something working you have been working on for hours. I'm still in school, and it happens way to often that when I see something is working I scream a "YES!" out loud and everyone will look at me. (Luckily, they're all programmers, so everyone can relate :P).
The other one is about creating something. First, there was nothing. After I'm done, there is a working computer program. Even better if it's a game
. I could never get a job where I'm not creating something.
Programming combines these. Math's is problem solving too, but you're not creating things
. (Well, you might be a small part of a large process, but it's not the same 'first, this didn't exist, than I did something, and now it does!)