1. They have to work through material that does not particularly interest them and is quite hard, but employers insist that they must master this stuff if they want a good position.
2. In their work environment, no one ever asks them to actually use theoretical CS concepts, and they don't spontaneously see applications themselves.
3. Therefore, they feel academia is out of touch and teaching irrelevant material that has no practical application. With my earlier comment I wanted to point out that I don't believe academia is to blame for their suffering.
And when I hire people, even though I hate doing adversarial whiteboard coding, I will probe to find out if people understand a bit of theory.
You can get a lot of work done without theoretical knowledge, (but the end result is often not as good, and it usually takes longer). Combine that with the fact that CS theory is hard, and you get a lot of people complaining about how theoretical CS is useless outside of academia.
It's basically an extension of "no one needs to know math beyond arithmetic in the real world".
The vast majority of companies essentially code and design to the lowest common denominator so that their devs are fungible cogs.
Code doesn't have fixed timing requirements, most of the time.
Personally I have also found basic graph theory to be immensely useful for representing and reasoning about things.
I agree! The graph theory portion of my algorithms class (more than half of the class) was the third most useful thing I learned in my degree.