Most of the problems that I saw people have with Xcode over the two decades that I worked on it were the result of one fundamental problem: They wanted to work a different way than Xcode is designed to work, and jumped through a ton of hoops to do so, and then blamed Xcode for not accommodating their intentional working at cross-purposes.
A good example: An app that considered itself “large” because it had a thousand tiny static library targets each with only one to three or so ObjC classes. Far smaller than Xcode itself, but because they insisted on working that way—for no real articulable benefit besides “that’s how we want to work”—their project took hours to build from scratch instead of minutes like much larger projects that have many fewer targets.