1) A product owner that articulated clear and granular user stories with acceptance criteria, and kept them prioritized. Sprint planning was quick and easy as a result, and developers had freedom to design and implement the story within those constraints.
2) A good engineering manager (scrum master) that insulated the team from pressure from product owner, and ensured product backlog was well articulated and sprint backlog was reasonable and practical.
Both of these things are clearly described by The Scrum Guide and how scrum should work.
This can be boiled down to trust: Is the company a high-trust environment where people are respected, or a low-trust environment where people are treated as machines. Sadly in my experience, most of this industry is the latter.