Increasingly it feels like my job has just become gluing together opensource components, which doesn't feel creative at all -- there's little problem-solving going on.
All the areas where I could feel like I'm contributing something aren't valued. For instance, shareholders don't care less if the software is reliable, performant, or secure because they only want something that "works." If it "works," everything else is irrelevant.
It wasn't like this when I first started. Back then it felt like open-source was mostly limited to template engines, URL routers, and so on -- stuff you wouldn't want to write yourself and probably couldn't do better. I'm working on a (non-JavaScript) project with almost 200 dependencies. I've had entire weeks at work where all I do is edit YAML files (I don't work in DevOps, it's not k8s) and write glue for code that I'm not allowed to write myself.
Any code I do write myself eventually gets replaced with another open-source package. Even if the package is worse! When I've tried to talk to my manager, he's told me we have to think about how maintainable the project is. It seems the company is trying to optimize for having as much code as possible be maintained by "the community" so they can minimize risk.
It's all left me feeling extremely depressed and I don't know what to do. I'd just leave and work somewhere else, but it seems like this is becoming more and more common. After all, most problems are solved by now. Why not just pull yet another package off GitHub?
I love to write code but most of the projects can be solved by assembling a few components with some YAML glue and little code. And I use an AI, Github Copilot, to help me doing that.
OpenSource is great for me. The alternative is the enterprise proprietary software with often a "contact us" price tag, which is hell. It takes a while, requires multiple calls to just get a quote, you need to sign legals documents, and then you can see that it's shit. Also, sometimes the price is stupidly too high. With OpenSource you can pull your software containers and start playing immediately.
I would say the combination of cloud services and open source means there is no better time to be a developer. You can get things done as a solo developer that would have been impossible 20 years ago: not having to fret over backups and OS versions because your cloud vendor does it in a serverless system is a massive time saver by itself.
If you're struggling to compete with open source packages when you write code, it's a good sign you are writing the wrong code.
It should be obvious though that the very best systems are always boring to work on. The vast majority of software does boring things (ETL or CRUD or security stuff) and there is no way to make it exciting. There is plenty of satisfaction in making it reliable though. Not everyone can work on the exciting stuff, not everyone is suited to working on the exciting stuff either.
Once upon a time, I wrote a program to handle email in VB6, it used POP2, SMTP and some crappy logic to decide what to reply. It was a long time ago, when you could still send messages from mickey@disney.com to your friends without worrying about DKIM, juts plain text.
Now I had to make something similar, but the level of security and signatures is insane. Lucky I just glued a few standard libraries in Racket and call it a day. Writing it was much much faster than the old project and I didn't have to study again the difference of HELO and EHLO.
Back to your problem:
Enjoy the new tools. One interesting part of programing is figuring out which libraries to glue to get high level result that is useful. Magician call it "effects" and "method".
Try to get permission to contribute to some of the projects you are using. Explain that it's better that it's merged mainstream instead of keeping a local fork. Choose the one that are interesting to you. Start with small features because you never know if it is not in the vision of the maintainer or if the maintainer is a moron.
Let me guess your packages aren’t up to date either and no one checks if they’re maintained?
Tell your manager when there are no challenges in the job the most skilled people will leave.
There's a very strong argument to be made to never reinvent the wheel when building something new. However, if your product is only gluing together packages without doing any work, then the value it can produce is extremely limited. Where is the business logic? Certainly not inside Open Source packages.
There are lots of reasons to use open source packages for your code. Making the code more maintainable isn't one of them. Adding dependencies needs to be considered as a potential future risk, and integrations need to be carefully encapsulated to minimize the risk and allow easy switching later.
If anything, dependencies make your product more brittle, because you are now at the whim of Open Source contributors who may take the package in a direction you don't want, leave unpatched security holes, or abandon the project entirely.
Yes, you can fork the project if that happens, but then you're in the same place you were to start with, maintaining the functionality internally.. except now since no one on your team wrote it originally, you have no expertise on it.
In your situation I would be sorely tempted to look for a new job with a better engineering manager. And with more interesting business cases to build.
If you don't like that, there are still some paths that are different: low-level embedded development, kernel development, driver development, database engine development etc. They're fairly niche compared to regular business apps development, and I suspect they expect more out of you as well.
Also, I wouldn't blame Opensource, as what you describe does not have anything to do with how the libraries are developed (for profit or FOSS). For example, back in early 2000 there were no good FOSS application servers (a concept from the age of J2EE) and people built their web apps on top of commercial application servers, such as BEA Weblogic or IBM Websphere.
What is this ecosystem where you can declaratively specify your program in YAML? And what are these magical dependencies that let you do this? Is it specific to an industry vertical? Could it be replicated for others?
If there is such a capability, I'd want to get in the business of making the tools rather than the apps.
But this is not realistic. The best time of programming (80-90) as long gone. Who is the architect engineer for UE5? No one, it has to be a huge team.
This isn't really an open source thing... if you replace it with $TEAM_IN_CHEAP_REGION it's nothing new.
Psychopathic managers just see FOSS as the new team in India, team in China except it costs $0.
One way might be to negotiate some time to contribute to the projects to get features mentioned in the Jira. Then you could code again, get public recogonition and help others.