I spend a non-trivial amount of my time talking to students, junior developers and other newcomers to the industry, and one of the war stories I share goes something like this.
At its heart, commercial software development is soul-crushingly depressing.
As a developer, your working day revolves around everything that's wrong with all the hard work you've put in so far. When you come in to work, your primary interface with reality is the infinite list of shit that needs to be done. You have a list of bugs that need fixing. You have a list of feature requests, things your software is deficient for not doing, and every one of which somebody can't live without. Your job is to pick something off one of those lists and fix it, but when you come in tomorrow, the infinite list of shit will still be infinitely long.
One memory from the early days of my current job is a developer who got so mired in this mindset that the founders literally ordered him to fly from Sydney to San Francisco where he could talk to some real customers, the people who had bought his product and, while they might have the occasional gripe, mostly wanted to tell him how awesome it was, and how it was helping them.
One thing I've been trying to do in my daily life is to be less critical of other peoples software, especially in public places, and especially if I think someone who might have been responsible for that software might be listening. I sometimes let frustration get the better of me, but I'm trying.
There are plenty of official channels to report bugs and request features, but when you go outside them, there's a good chance all you're going to do is ruin someone's day for no real benefit.