To be honest I had started to hate programming and the industry overall until I started learning functional programming and about category theory, etc. It turns out I've been working on crap my whole career, at least in my opinion, and that's why most of my time has been spent fixing bugs, slowly adding new features while working around horrible design. Working on crappy software with crappy design and crappy develop…
I've read that the people most satisfied in life are craftsmen who dedicate themselves to mastering a craft. There is not much craft in managing deadlines and customer commitments and such. It is necessary work but it is not creative.
On the other hand, crafting code is a creative activity. Even for the simplest projects you can appreciate the structure, and learn about the varying tradeoffs in complexity that are made by any particular design pattern. This type of thing is a very rich craft, and very satisfying to master.
The good news for us is that mastering this craft translates into satisfied deadlines and confidence in ability to deliver on customer commitments. We can be master craftsmen and be nearly guaranteed success in the knowledge economy, which is not a luxury of other crafts like art and writing.