Most businesses use “Agile” systems that are Waterfall dressed up to look like Agile. I call these places Soul Crushing Code Factories. Let's call them “SCRUFs”.
SCRUFs crank out widgets and features but their products tend to exist in a local maximum. They make mediocre products.
The main problem at a SCRUF is how requirements make their way to a developer. By the time a requirement hits the desk of a developer 90% of the decisions have been made but with no input from the dev writing the code. They often have extremely little background or rationale for the feature and why they need to do it the way it's been specified but they have total control over breaking the feature up into pieces and guessing how long they will take so … it's agile! 🙃
This is a bad fit for a Product Developer because they had no involvement upstream in the process and no opportunity to talk to users or dig into data about users so they could brainstorm all the ways to tackle the problem.
Less obviously it's a bad fit for Infrastructure Developers because SCRUFs typically provide little opportunity for the type of high-level, abstract work on the codebase that they love!