1) What what about programming first caught your interest?
I was first interested in artificial intelligence, when I was younger (before I had a computer) -- I wanted to program a machine to be my friend. Once I got a computer, I realized that AI was a "hard problem". So I abandoned that idea, and got into mostly automating things. The first time I automated applying pricing data and using a script to enter it into an old green-screen (RS232 terminal) application, and saw it finish in a half hour instead of taking 3-4 people 2 days to enter it, I was hooked for life.
2) What is your favorite part of the job?
I would say the feeling of creating something that hasn't been done before, and getting recognition from peers and managers. Basically making life better for myself and others.
3) Do you work from home or in an office, which do you prefer?
Both. I like working at the office, since there are fewer other distractions (except the normal office distractions), and the clock keeps me focused on getting the job done (I can't be there till 3:00 AM). I also like getting paid for what I find is "fun". At home, I like the freedom to work till 3:00 AM if need be, and at home I can work on my personal projects.
4) What type of projects do you work on?
I'm not that good at User-facing things (fairly horrific at user interfaces), so I tend to stick with task automation scripts, and creating/using APIs. I can do back end Web work, but need to partner with someone else to make a pretty and usable front end.
5) What kind of mentality do you think it takes to be a good Programmer?
You need to have the ability to keep a thousand details in your head at once; know which details you can kick out and look up vs. committed to memory; and you need to not be afraid of failure. The computer will tell you hundreds of times during a coding session that "you suck", "this is all wrong, fix it", etc. You can't let this get to you.
6) What is the toughest part of the job?
Getting started on a new project is fairly difficult -- trying to figure out where to start programming. Sometimes writing code in a language which has a log of "boiler plate" code is helpful -- by the time you finish typing in all the headers and includes, you forget that you don't know how to start your program, and before you know it you are on the second, third, forth tasks already.
If there's anything you would like to add please do.
My primary job is systems administration/engineering/design, etc. Some programming enters into it, such as creating build scripts, and occasionally designing internal projects. But I tend to tinker around with things more than I should, although instead of getting in trouble for it I usually get promoted.