I see it as: it's the "bullshit" that creates the value for others.
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.
This is (in a roundabout way) also the main problem with all the "FOSS maintainers don't get paid enough" threads IMO. The dream is to get paid purely for writing software, without having to do marketing, sales, support or any of the other things that come with running a company. You just write code for the features that excite you and then money somehow appears. Sadly the non-fun bits are crucial to the getting paid bits.
Engh... I think the issue is that a lot of open source maintainers ARE doing that work but are doing it FOR FREE and it is burning them out, because they AREN'T doing the thing you are saying where they just write the parts that excite them: they are also triaging bugs and incorporating feedback and are having to constantly answer people demanding timelines... if they weren't doing all of that stuff we honestly wouldn't talk about the issue so much as we wouldn't be caught in a lurch when they stop providing us all that free value!
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.
Money is information. If maintainers eschew their own marketing, sales, and (paid) support then they lose access to this information. When someone else interprets the information provided through payment and non-payment their interpretation flavored by their own goals and shaped by their (mis)understanding of the product will introduce noise (i.e. bullshit) into the signal.
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.
Money will never compensate fun. It's just what you do so you can eat at all. I have not met a single person who on their deathbed thought "I could have had more fun, but that's fine because I have money".
Not on their deathbed, but before that, having money can help you have more fun, if not while working, then at least in your free time. It doesn't have to be obscene amounts of money, but if you're constantly broke and can't afford anything, that's definitely not fun either...
> But the fact that it has to generate value for others is what removes the fun.
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.
This is absolutely the implication. If you’re getting paid for everything else, then that is what is generating the most value.
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?
People who talk about wanting to do “pure programming” somehow without dealing with customers or anything outside their own skull is, to me, like people who consider themselves artists without producing art which people can experience. What is art for, if not to be viewed and experienced? What is a program for, if not to be used for some practical purpose? For a person to be considered a programmer, their role must be to solve problems for people who cannot or would rather not solve the problem for themselves. People who instead want to sit and stare out the window and only occasionally write things down, they are like mathematicians in academia. These people are of course useful, but I would not call them “programmers”; perhaps “computer scientists”. Other people, who instead want to produce “beautiful” snippets of code, are effectively artists, the art of which other programmers can certainly enjoy. But I would not call such people “programmers” either. (Perhaps “computer scientists with tenure”.) Programming is to solve problems for other people (possibly including oneself).
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.
The gatekeeping is strong in this one. Why does it matter how you label people? (emphasis added because that's not how people generally define programmers) Just let people do what they want.
My “labeling” is a form of expression to describe my point. You can disagree, but please be explicit instead of just going “well, that’s just what you think”. This is a discussion forum; I expect people to have differing opinions, and I want to debate them. You just seem to want to instead shut down any debate.
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.
I don't know. I've written programs used by millions in an enterprise-grade code base and the amount of paperwork, poor management, meetings and mandatory HR trainings made the process not much fun at all, even if compensation was pretty good. OTOH I really enjoyed the programs used just by me, written in my spare time exactly the way I want.
I can relate to both: if you can be proud of your work ("I helped build this, and hundreds of people are using it"), that's a good feeling. If however the process is bureaucratic and you feel like a small cog in the machine without any influence on how the project will turn out, then I can understand that it's not a satisfying experience. Depending on the project, you can also have both - on some days you will have the former feeling, on some days the latter.
>I see it as: it's the "bullshit" that creates the value for 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.
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.