I'm still in training, but I've had my share of experience in the "real world" so to speak.
1. Computers excited my imagination as a kid; I spent hours on the old Apple IIe programming and figuring things out. Also, I had a big role model in the field to look up to.
2. Depends on where you are. A "grunt" programmer needs to know some concept (how to do OOP, a bit of design, other theory) and a few languages (the more the better, C++ is a good start). A project manager or an architect needs to know software design, design
patterns, and project management/lifecycle stuff. Other jobs have different requirements.
3. IDEs for sure (VS, vim, even TextPad), basic office productivity things (Word), knowledge of the OS is a good thing too. Knowing how to drive the command line is always good too.
4. Not yet
5. Depends on the day. Sometimes I have to do some Q&A, other days is coding, or even just going to meetings to work out designs and stuff like that.
6. Everything. I love being a programmer and all that stuff.
7. Very little. Bad coworkers (who write shoddy code) are always bad, but thats a given. The hours can get insane at crunch time, but that's ok with me.
8. Don't fall into the Linux zealot thing. Comment your code! (DO IT!) Don't worry about learning specific languages all the time, worry about learning how to learn new languages. Know how to code to specific code styles. Join the programming team, its
9. The break room being stocked with soda and all kinds of good stuff is good.
11. depends on how you get hired, or if you're a contractor. If you get hired by a company, its either hourly or salary. by the project is contractor stuff
12. // /* */ * ' (mmm comments)