At least for me that adds to fun.
2 programs. One only gets used by me, the other by 100 people. It is way more fun to write the second. Compensation being equal and all.
May be some open-source software becomes notable without any marketing or sales, but I constantly see a lot of very conscious effort by FOSS maintainers to popularise their work. They go to meetups, do talks, post on twitter and HN. And yet the most that majority of them can hope for is getting a boost to their resume and being hired as a distinguished staff/principal-level engineer somewhere because of their open-source clout.
The goal for maintainers who dislike the business side of things should be to write code that makes those business activities as painless as possible for the maintainer themselves. In writing such code they will develop a greater understanding of the process and may even learn to appreciate it. A true win would be to generalize that code so that other maintainers can use it to make their lives easier while still being able to glean valuable information from it.
It could also be the one thing that makes your work meaningful.
I don't think the focus on value-for-others in itself is the fun-killer, but that there are diverging, in-congruent quotas to satisfy, that there are meetings that waste time, that design-by-committee makes the products dumb, that you lose autonomy, that there are more boring things to do than interesting things.
I think everyone needs and wants validation to varying degrees, and providing value to others is the means to achieve that (also.. money). Some people are less motivated by this than others, granted, but cannot exist in a bubble without going nuts. Even if programming were just for ourselves, some other labor is geared to others.
There's some bullshit (i.e. non-coding activity that's tedious but still needed) that creates the value for others involved.
But there is also tons of bullshit that destroys value for others, society, and even for the company itself. Without the latter kind of BS we'd be far better as society.
I.e. if you don’t like to solve problems for other people, then programming is not for you, and you should consider becoming a computer scientist instead.
And yes, I do want to “gatekeep” any profoundly unhelpful people out of programming. Programming should be about helping people do things they otherwise don’t know how or could not do for themselves. Navel-gazers and gnostics (while they have their proper place and use) are generally not suited for, and reflect poorly on, the vocation of programming.
The point is when someone says “how could you not love programming?” The answer is because “programming” is just incidental to what people are doing at the professional level. Because for professionals, programming comes along with the notion that if you do not succeed you will lose your job and potentially your livelihood and then its far too easy for programming and dread to get linked in your head. I think because programming is creative so it is in some way an expression of yourself its easy to get too attached and frustrating when there’s this other thing attached.
We get paid to do this thing called “software engineering” but programming is a big part of it and programming has elements of a creative discipline. The same way I cannot guarantee a song will be a top 40 hit even if it is sound in a music theory sense, I cannot guarantee a piece of code I write will be useful or valuable even if it is bug free.
I think this frustration is part of all fields where creativity is a component (musicians, filmmakers, athletes, journalists, researchers, mathematicians) but we sell what we do as a strict engineering discipline. But it’s not. If it were a strict engineering, why would we create KPIs or go over click rates or usage statistics with engineers?
Basketball, or programming for your own pleasure is just that: pleasure. of course you'd do it for free if it's something you enjoy.
But the fact that it has to generate value for others is what removes the fun. You will have to make changes to your priorities, take into account others' preferences, etc etc.
Luckily if done right generates enough money to compensate for that.