I came across an interesting thought on Hackernews forums, on a discussion about job satisfaction in software engineering.

Software engineering is philosophically no different than plumbing -- sometimes the job is designing and implementing a plumbing system in a new building, other times it's diagnosing the source of a leak and fixing it, many times it's clearing literal feces from a pipe. Your value is not just extracting those turds, it's often being calm, competent, compassionate, timely and communicative while doing so. It comes from perseverance for solving the problem to the customer's satisfaction. It also comes from defusing situations with angry / incompetent clients, disaster projects, and resolving chaotic situations. Your role is to help reduce friction and solve problems for a person or organization in need.

I’ve had similar experiences in design across all of the companies I’ve worked at. There is rarely any space to do your own solutioning, especially when you’re working directly with enterprise clients. We’re essentially digital plumbers. Everything else is just image building and wishful thinking. This might seem like a bit of a letdown to many, who enjoy problem solving and owning your work. But let’s drill down to the core of this issue.

Autonomy and paid work #

Any place where money is involved, you lose some autonomy. There is an expectation of delivering goods to the payer of the money, whether that is software or anything else. In most companies that means the lowly employee has barely any freedom in choosing what to work on and the way they work. Without much freedom, all work feels like grunt work, leading to burnout and boredom. In fact, many employees have taken up gaming at their workplace.

According to a Venturebeat post, games offer some degree of autonomy and control, which many workplaces don’t offer.

Games can make us happy by fulfilling needs, yet have not conclusively managed to improve the circumstances of work, given a focus on the nature of work or tasks therein rather the influence of managers or others who set the environment or structure of work.

Is there a way to make it better? #

I could only find and try solutions at an individual level. The one thing that has worked great for me is to start an interesting side gig without any expectation of money. This is probably the reason many software developers contribute to open source projects, or others take up an interest in social causes. Hell, we could even take up gaming as our side gig.

As long as money is involved, do not have the expectation of autonomy. If you have such a thing, that’s great. But most of us are no different than plumbers. The shit pipes are often blocked, so we shovel the shit for money. Then we go home and try to do something different.