I was having my weekly Django angst, where I thought “I should do more Django because Django doesn’t come naturally to me. Android angst followed, because I haven’t taken the plunge there. And then I went to the dark place, how I’m doing less greenfield programming and more maintenance.
Programming often means maintenance. If it’s all greenfield work, the likelihood that it will ship/make a difference diminishes greatly. In fact, fixing bugs, writing unit tests, yeah, maybe it’s not bleeding-edge, freaky-deaky, but … and then you go to that dark place. The maintenance downsides: fear (e.g. “I’m stuck,” or “I haven’t changed or grown”); boredom; restlessness. So you made the non-working work, nudged the ball slightly farther down the fairway. Who cares?
But maintenance reflects something both obvious and un-sexy: necessity. You patched something half-broken because someone actually cared. Someone (maybe just you) wanted it fixed. They wanted it enough to say “I use the working half, I want it all to work, it matters.” (It’s a little like broken windows.)
Greenfield projects work as junk bonds, speculations in a heated market, but speculations are wild and carefree. They may never ship, or may ship with no one caring. Maintenance is a dividend, boring and old and saying “someone cares.” Even if that ROI is small, a little lost on you, or requires skill on a spectrum from brain-dead to lame, someone cared.