I have enough hubris to consider myself a
lazy software developer. I also work in an organization where there is not a lot of
slack. Overall, I consider myself very blessed to be a part of the software group in which I work. There are many intangible rewards that I receive personally by working on the projects I'm assigned to work on.
Most of what I wanted to say in this article has
already been said, so I'll spare you the effort if you're already
well-read in
this area.
However, the lazy developer / no slack combination often produces an interesting set of emotions within me. In particular, I repeatedly feel a certain ugly kind of frustration.
Here is my shot at defining this certain kind of frustration:
Funding Guilt: n. The feeling of having a sense that you could solve the problem at hand in a better way and more conveniently by inventing a solution to a more general problem, but being in a position where the investment in that more general solution is not specifically funded by the person paying for the specific assignment and might be more costly in the short term.
A lazy developer's answer to this is often to ignore the context and
solve the more general problem anyway, with an eye toward paring the problem down to its core and avoiding gold-plating.
I remember working with a very smart developer who told me he kept an open critical bug as cover for getting real work done. If asked what he was spending his time on, he would point to his efforts to solve the critical bug. He would make enough progress on the bug over a period of time that people would continue to leave him alone, because they really wanted the bug fixed as soon as possible. But he devoted a significant amount of his time each day toward his real work. And when that bug got fixed, he'd pick up another serious bug that looked like it could be of use. Maybe this approach could be called "Bug Cover".
Although that approach to avoiding funding guilt is deceptive at its core, it worked for him. I'd prefer a way to avoid funding guilt that was more above board.
And perhaps funding guilt only appears in hyper-responsible people, of which I am one.
For those of us who feel it, acknowledgment of this emotion sometimes helps create a sense of understanding and perspective in ourselves and others, including possibly sponsors of our work. It is important to be able to forgive oneself for funding guilt if solving the more general problem is really the right thing to do. But this is not a resolution to the core question. How can funding guilt be avoided as a matter of course?
Maybe it's a matter of choosing very carefully which projects you work on, or at least
aborting unfruitful projects very quickly.
Maybe the proper response to expressed funding guilt is at the core of the art of great software management. Perhaps great managers are those who can create the sense of slack that is needed to allow developers to get their juices flowing and create great stuff.
Even if it does involve a little cover.
P.S. FWIW, many of the ideas in this post come from having read and digested the following: