When I look at myself, coding is great when I learn new things, new APIs, can glue stuff together to create new systems which haven't been there before. Once I master a technology or have to do stuff which was done million times before it gets boring. Then, I rather seek for the next kick, the next API, the next language/framework/lib.
So, having ongoing novelties seems to be an important part of a coder's reward system. This hurts finishing and going the last mile, the most difficult part of a project that is not about facing steady novelties. Often it even means to abandon the shiny new tech and rebuild stuff in some proven tech.
However, the bad is you never finish, the good is you learn all the time. Better than checking Facebook, Instagram and your smartphone 24/7.