I think programming is easy. When I sit down to code something, it feels deterministic, and everything falls into place. I attribute this to: 1) IQ 3 standard deviations above. If I hadn't been this way when I started, I probably wouldn't have started. 2) I've been practicing hard, 25 years. That's a lot of time to try a lot of ways to do a lot of things, and find what works. Here's what's difficult for me, and what…
But I would still add that I'm doubtful that someone can work on large projects and not have communicating and working with other people be an actual part of programming (rather than that "other problem", "people").
If your projects need you to produce code that other people will modify, I would claim that your coding is going to be a matter of communication. Perhaps you write one-shot firmware for toasters or missiles so this doesn't apply. But I think any student of programming in general tends to see the task as a process of communication and not just cleverness. On this subject, I'd recommend Steve McConnell's Code complete.
http://www.amazon.com/Code-Complete-Practical-Handbook-Const...