I have done (and do) both and I think both are enjoyable but require considerably different mindsets. Both require critical thinking and attention to detail, but I think it takes more time and a lot more experience to make a good SA. The practice of SA is not as cut and dried as programming, and the problems can be much more open-ended and require more creativity and patience to solve. SA's can't drop a network into a debugger and get a stack trace that points them at the source of the problem (and yet there are still a thousand variables, and sometimes those variable are outside the realm of their control). Instead, they have to draw on much a wider array of resources/tools to observe, test, and methodically piece things together. And to be effective at this, they have to master a lot of different subjects in order to notice the disparate array of little things that make a system go awry.
Further good SA is cool-headed, patient, and a little paranoid. I used to describe SA as how I heard someone describe anesthesiology: it's 90% boredom and 10% terror. But it's not really boredom. It can just get quiet, and those are the times where you need to really be looking for things and heading things off. Good SA's solve problems before they happen and put contingencies in place without anyone telling them to. Also, SA's often have to have good organization skills and be adept at writing documentation.
There are many different areas of system administration, and so your exposure to terror, detective work, etc. depends on which areas you are in and the level of responsibility you have. But in general, it seems like a system administrator has the ability/opportunity to really screw things up more than a programmer, so you have to be in your toes and learn to be slow and methodical in your work. And many of the required traits are not something you can easily teach/impart.
While I spend more time doing software development, I have the highest respect for good admins, especially UNIX admins.