We call it software engineering as if it were actually engineering, but there’s a certain creative ethos that’s woven into the work we do, or at least the way we perform that work. Computers are these nearly-frictionless vectors for the innate and virtuous human desire for creation. To the degree that’s true, programming them is maybe more an expression of artistic, rather than rote, fulfillment.
And to the degree that’s true, I guess we need to think about artistic motivation when we think about developer motivation. Not just the stuff of getting us out of bed in the morning; not just whatever is driving us to press the buttons that make the things go. But how to cultivate that motivation, how to foster and care for this creative, artistic element of productivity -- which I think is at the core of developer happiness.
This isn’t to say programming is an artistic medium; I think that’s dangerous and hugely counterproductive. Code-as-art produces terrible things which fail basic metrics of value. But, in my opinion, artistic expression provides a coherent framework for understanding the way we build, the way we work, the way we self-organize and become productive.
Developer happiness, then, is comprised both of the obvious stuff—professional autonomy, managerial satisfaction, shipping useful products, etc.—and the non-obvious—the satisfaction in creation—a personal and aesthetic sense of beauty.