Being a programmer is fun: you can create things. That’s what brought me into the profession. Even more, I always perceived that as something bigger than the profession. A way of thinking, living … a purpose, you know.
The thing I enjoy most about programming is this feeling you create something, especially when it works.
However, there’s the opposite side of things, which happens much more than ‘it all works very well’ stage.
First is when it does not work, and you’re trying to figure out why. Or there are bugs: it works, but in some cases it does not.
Second is when it works, but you think on the ways of improving things. Either through new features, or sometimes doing a complete refactor.