Meaningful jobs do exist and more can be created. You are a probably high-paid, skilled professional and, contrary to popular belief, you do have agency.
Quit your job and start doing something meaningful. Start a company or join one that makes a difference.
I think for me at least, the difference between "programming for fun/own projects" and "programming for work" goes deeper than the difference between say a company with neutral/bad values and a company you might be passionate about mission-wise. At the end of the day, as the software guy, your job still consists of:
1) taking instructions from someone else on exactly what to build, and how (choice of framework etc)
2) working backwards from someone else's code to figure out what they were thinking and how to modify it to the requirements/add a new feature/whatever
I got into programming because it was a great form of self-expression. I've had some great jobs that related to my interests, e.g. adding variants to Chess.com, but at the end of the day that was still someone else's project and I was just the guy they were getting to build it for them. The inherent satisfaction wasn't there. YMMV though obviously, but I like to use an art analogy: if you're a painter, you'll always be frustrated and demotivated painting portraits of people's pets -- even if it's for charity, or you like the person, or whatever.
Another way personal projects are different is the fact that there's not usually someone depending on you- whether that's in the form of timelines, API stability, tech choice, etc.
I'm working on a large breaking change to a personal codebase right now, and its taken almost 3 years of procrastination, lazy research when I feel like it, and the API changing and changing again due to rewrites. I'd like to finish by 2025, but if I don't, nothing happens!
The whole thing has felt fun due to the lack of pressure and just... not working on it when I feel like doing something else.
Very different from work projects, even the interesting ones with great bosses and teammates.
1/ SWE jobs where you have some agency on what to build and the tooling choice do exist. Try working as an employee for an engineer-driven company.
2/ that can be rewarding. I have found nuggets of genius in other people's code. Being able to think like someone else is a valuable intellectual exercise.
On self-expression: the most highly trained musicians at the best orchestras spend their time refining the interpretation of music they didn't write. The more constraints are written into the sheet music, the more creative you have to get.
I'm not saying your perspective is wrong. I'm just saying someone could have your job and come to completely different conclusions.
Maybe you have to change your perspective or find an occupation which matches your perspective on life and work.
Or you could keep your job and rant on your blog from time to time if that's what you need. Ranting is sometimes necessary for mental hygiene.
Out of curiosity: What exactly kept you from working on a pet project instead of adding variants to Chess.com? Fear of failure? Fear of rejection from your audience? Something else entirely? Sometimes a little courage is all it takes to bring more happiness into your life.
> [highly trained musicians in orchestras spend all their time playing pieces they didn't write]
That's an interesting point, but if you got into programming via working on your own projects, the musical analogy is "I loved play jazz saxophone with my cool cats, but every paid gig I get just wants me to play note-for-note Duke Ellington transcriptions." The essence of jazz is improv, but playing classical music is more about playing/experiencing beautiful music which I am probably lack the capacity to write myself. (Not saying classical is better than jazz or vice-versa, you just go into them for very different reasons.)
But the analogy is kind of interesting, since there might be jobs for which the outcome (e.g. beautiful music) is so compelling that I will happily take their directions. I got in software to do jazz, and would be willing to do pre-scripted beauty, but unfortunately, most software jobs are not either of those.
> > Quit your job and start doing something meaningful
I think when people say that they forgive that unless you are calling the shots over the direction of the work of a bunch of people, then you are not really moving anything, even at the microlevel you need to be at the helm of a group of 5-6 people to move things at a speed that is not as depresingly slow as watching paint dry.
It's not that easy because quitting your job might mean less burnout but also mean that you'll find yourslef alone without any team and most importantly renouncing your ability to call the shots or influencing the direction of the work in which the team is heading, very quickly you can go from burnout to irrelevance.
At that point the only things you can do in order not to feel like a suck are the things that everybody else is doing alone and hence kinda everybody is doing at the same speed such as learning a new language or becoming stronger at the gym or learning to surf but nobody would be paying you to do that.
> However, most students are not good enough at math to learn functional programming concepts.
When does this misconception disappear?
You don't need to be good at math to use functional programming. It's nice that there is a correspondence between math and FP, but it's mostly irrelevant when coding. You could as well say you need a FP background when learning math. Both statements are nonsense and usually spread by people who mostly read complicated blogposts instead of writing actual code using FP.
FP just offers a nice bunch of intuitive and predictable ways of processing information.
Take Lisp as a perfect example, I doubt you'd find very many people who think that you need to be strong at maths to learn Lisp. I wonder if this misconception came about because of Haskell's (unfounded) reputation of being a "scary abstract maths language".
Quit your job and start doing something meaningful. Start a company or join one that makes a difference.
Take risks, it’s really rewarding.