While I agree that puzzles and mind games are silly ways to appraise coding skills, they do give an insight about a person's raw intelligence, or knowledge, or potential. As CS is an application of math and programming is an application of CS, being good in math does not necessarily mean proficiency in it's application; same goes for CS. IMO, a good programmer must, at least, have:
+ knowledge - generally mastery of math/CS concepts and can be thought of as the potential
+ application skills - modeling a real world problem into a theoretical, computable, and (ultimately) programmable form
+ execution skills - implementation (coding) of a solution including the ability to utilize requisite tools/technologies such programming languages, DBs, OS, and so on
That said, hiring process should cover each of these areas and programmers should work on all these as well.
Programming is a tool for expressing, realizing, or creating. With it, you express ideas and yourself in a unique way. The simple thought that, with programming, I can bring into existence something big keeps me grinning already. When working, I think of it as me bringing to existence ideas in behalf of my company. A pretty cool ability. How I usually see programming is that it can change the world.
As for you, take a break from programming and see if you miss it and what you miss about it. They do say you don't know what you got till its gone.
Here's a sober reason why to use a framework http://symfony.com/why-use-a-framework.