Thought I'd pile on with some observations I've been writing down since the end of last year. I've been using Xcode for 7 hours a day for about 5 years now.
Xcode 10 came out a month or so ago, and what I originally wrote below is all still the case. But we have darkmode now so that's nice.
The new build system is orders of magnitude slower than the legacy build system. Instead of taking 4 minutes to build (if the weather is just right) it takes around 15 minutes for our large ObjC/Swift project. And since Xcode is still a point-oh release we have deal with nothing being remotely optimised on top of everthing from Xcode 9: I have to restart my machine at least once a day or a cannot type text into a text field.
Code suggestion is still terrible in Xcode 10, but it's more consisitently rubbish. In 9 you'd often be suggested garbage that bore a passing likeness to what you typed. In Xcode 10 it'll hide this until it has accurate results to show you. This takes no less than 10 seconds in our project for any kind of symbol. It could be a var directly above the line you are typing, it doesn't matter, you'll be staring at a blinking cursor for ages before anything shows up. For long, complicated method names (especially things like UICollectionViewDatasource methods) there is no alternative but to open Safari and Google "UICollectionViewDatasource" to get the method signature you're looking for than to start typing `minimumLineSpac..." and wait for it to show up: you can litearlly summon this information from the other side of planet earth faster than Xcode can dredge it up from your SSD. This one issue alone makes Xcode a misery to use, but it has plenty of company:
Infuriatingly long build times with Swift projects. We're talking up to 10 minutes for very large projects. During this compilation phase you will barely be able to scroll your source files because the UI thread will be constantly interrupted. Building big projects on a MBP absolutely obliterates the battery.
Bringing up the Commit dialog to commit changes beachballs Xcode for about a full minute. And then crashes it more often than not. No wonder, during WWDC 2017's Xcode developer presentation, the crowed actually laughed out loud when an engineer claimed "Xcode has robust versoin control features".
General slowness or stickiness in navigation and typing even when nothing is building and nothing indexing. It's as if the UI thread is being interrupted every three seconds.
Scrolling a source file is choppy and frequently stutters.
Scrolling a source file while the Version editor is visible is extremely choppy and unusuable while actually working on code - it's only useful for checking changes since a MacBook Pro seemingly cannot support typing text while this feature is open.
The debugger takes up to 30 seconds to print out a variable.
The debugger, by default, outputs a never ending stream of unwanted OS logs unless you disable that 'feature' in the scheme. It also somehow can't scroll reliably to the bottom, which is perhaps mostly where you'll actually want to be.
Stepping through lines can be prohibitively slow on large Swift projects. It can take literally 5 seconds to get from one line to the next and with the Xcode window and iPhone window trading focus between every step this whole feature feels repellently sluggish and heavy.
Phantom errors that don't go anywhere when you click them, or that disappear except when actively building, or they let you build anyway.
CoreData generating subclasses of NSManagedObject: no matter where I put them, what group I add them to, what folder I save them to, something always gets messed up here - files missing from the project or extra files hanging around in the root folder, or files which haven't been made part of the project for some reason.
The simulator does really not want to go to the app switching view; the timing of double clicking the home button to trigger app switching is like a frame-perfect Street Fighter 2 Turbo Plus Alpha blocking manouvre.
CMD-clicking on symbols does one of four things: 1) nothing at all, 2) shows a big dumb question mark, 3) takes you to a completely unrelated class because there is a variable/method with the same name there, 4) eventually, maybe, after several long seconds, take you to the correct var/method. It is always quicker to jump by copy & paste: Copy the class name, CMD-shift-o, paste and 90% of the time the top entry is what you want, and it takes no time.
This may sound silly, but this problem is compounded by the arrow key layout on Macbook keyboards: the up and down arrow are microscopic and surrounded on either side by gigantic left/right arrow keys, so when the suggestion menu does eventually pop up there is about a 40% chance I'll tap left instead of down and lose the menu altogether. Again, maybe silly, but whenever it happens I curse out loud at Xcode and this keyboard layout - it's a frustrating user experience to say the least.
The complete lack of any kind of descriptive error if you chooose "Automatically Generate Subclasses" for NSManagedObjects when you already have a subclass; compiles fail with duplicate file warnings because of an pre-ticked check box you might not even know exists - and the files that it generates are not visible to you anywhere in your project.
Having to hit space-backspace at the end of almost every sentence because Xcode thinks you want a tiny thumbnail of the image "blueArrow.png" from your assets folder in your line of code because you typed 'BlurredViewHelper' which has the letters B L U E in it. Because autocomplete for actual code symbols rarely works, these pointless suggestions are often the only ones you ever see. Xcode has to work to pull these from the assets folder apparently, because when things start getting busy this suggestion-of-pointless-images will actually slow your typing down. In 2018 I don't think it's unreasonably to wish for an IDE which can display letters as fast as you can type them.
The song and dance around unlocking, disconnecting, and reconnecting devices all the time. This is compounded by poor USB-C ports on MacBook Pros which disconnect if they are 1/10th of a mm out of the port; this happens dozens of times a day for me. Debugging on a device usually results in the device losing connection because of this.
Debugging on the Apple Watch is prohibitively slow, to the point where almost nobody even bothers making watch apps.
Add a folder to you project, and start typing a name for it, say "TransitionHandlers". The first letter will be entered. and then the navigation window will jump to another folder that starts with the second letter, leaving your new folder named "T".
Autocompletes paramater-less methods withtout ().
The QuickLook menu is UX infuriating. This is where you hover over a variable in code, not in the inspector in the window at the bottom. It does not show until variables have been loaded for introspection by the debugger, but it doesn't tell you this by using any kind of activity indicator; instead it will just appear to work sometimes and not work other times for no obvious reason. You end up hovering your mouse cursor over a variable like you're rubbing a magic lantern. And after you do get it to show up, it'll very likely say it can't load QuickView data for the var.
A certain number / kind of changes to a file will render SourceKit unable to figure out what's going on anywhere in that file; it cannot intelligently distinguish classes/methods.
To other member's point of how Apple's engineers can possibly suffer Xcode internally: they very probably do the vast majority of their development in Objective-C with the exception of some recent apps like Music/Podcast and some apps which _have_ to be written in Swift (for appearances) like the WWDC app. In my experience almost all of the issues I outlined above are not really an issue when developing solely in ObjC - they are occasional annoyances rather than a waking nightmare.
At this point I'm beyond frustrated with Xcode. I finish each day with a headache, exhausted, from fighting with this stuttering, broken IDE.