1. The multitude of small wins that you get throughout the day as you solve problem after problem, all from the comfort of your chair while you drink coffee and listen to music.
2. Creating something from nothing, not unique to software engineering but it is super satisfying to see something that didn't exist before start to form in front of you.
3. Whenever I see some one do data entry or some other laborious task, that I can automate in under 15 minutes, it makes you appreciate the fact that I know how to solve this problem in a more efficient way. People dismiss this because they don't understand that it takes me 15 minutes to write a program that inserts 1 row or 1 million rows, the work stays the same, this is not true for manual labour.