It's not great, but for an IDE (not a text-editor with plugins), I've always found it miles better than the Intellij suite. I preferred Visual Studio when I was working on Windows, but that's a much bigger project, so perhaps not a fully fair comparison.
Xcode from ~2021 onwards, with Swift package support, has been a significant improvement too. Now you can avoid much of the IDE configuration and just work with source code more, something I prefer. There was also a period of a few years where it crashed all the time (Swift 1-4?) but those days seem to be long gone now.
The source control integration has always sucked and I steer clear, but I was always doing the same in Intellij/etc or Visual Studio anyway.
Perhaps today VSCode is sufficiently IDE-like with enough packages, and perhaps it's fast enough, but I still feel like there's a difference, and even though I can do Swift in it I prefer to use Xcode. Changing Xcode's shortcuts to something more reasonable made a huge usability difference too.
I'm interested to hear what you think is so terrible about Xcode. Perhaps I'm missing something!
I’d rather deal with a slow and cumbersome IDE than one that moves things around with every major update and introduces major bugs that don’t get addressed in in a timely manner because the IDE updates are tied to iOS releases for some god forsaken reason.
I was a fan of AppCode until JetBrains dropped it.
Beyond that, there are some things that can make SourceKit (provider of syntax coloration, autocomplete, etc) grumpy, but those are almost all code smells that should be avoided anyway like pyramids of doom built of closures or way-too-long optional chains.
I think SourceKit was the source of many crashes a few years ago, more recently it seems to have transitioned to fewer crashes and more cases where it just gets "grumpy" as you said, and in the last few years I've even found most of those cases have ceased.
It scales poorly, shitting itself every time you open files larger than a megabyte (DB dumps as JSON hang it).
Xcode 15.3/15.4 shipped a really stupid bug where, when it detects certain changes to the file system, it just deletes the Package.resolved file, breaking your build. So you have to close the project just to do a git pull.
Speaking of closing, its overall launch and opening performance is very poor. Opening old style storyboards can hang the UI for multiple seconds. It abuses the main queue like none other.
Its UI can't handle large scale testing. It even added support for repeated tests in the UI, but viewing the results of thousands of test runs hangs the UI. When I do my manual test repetitions in the millions, I can wait literal minutes for the UI to render the result list. And I have to do those million test runs manually because the support they added for repeating tests in the UI run much more slowly its magnitudes slower.
Its syntax highlighting, like much of its tooling, breaks constantly, and yet is extremely inflexible. It has no customizable formatting capability, nor a Swift formatter or linter built in. It can't format on save, nor does it have any configuration available there.
Did I mention it has no real extensibility? Years ago there was a thriving third party plugin ecosystem, with a plugin manager called Alcatraz. It could manage plugins, snippets, editor themes, and project blueprints, all from within Xcode. Apple killed it by locking down the plugin API it used and replaced it with APIs that are a tenth as capable, barely work, and haven't been touched since.
So what's so terrible about Xcode? It's a death by a thousand paper cuts (and the occasional missing finger).
Oh, so that's why my builds have broken from time to time and have required me to use File → Packages → Resolve Package Versions to fix it.
You can fix this by fewer chained calls to high-order functions or explicitly declaring returned variable types. Whatever it takes to reduce the search space to resolve your types.
Their live preview when you're building a swiftui, apart from that I'm not sure what's better in their UI. Managing windows is clunkier, the rest is very standard ide stuff?
Also, opening Xcode on my M2 will take an average of 10-15 seconds, what’s up with that.
The next problem is that some important areas seem to be abandondend. For instance the debugger variable view panel is so extremely bare bones compared to a "proper" IDE to be hardly usable, and nothing has been done about in at least a decade.
Next we have that weird 'scheme model' for setting build target options. No idea how any software engineer could come up with such an awkward and unintuitive system when there have been plenty of examples around how to do it better when Xcode was created.
> there have been plenty of examples around how to do it better when Xcode was created.
any good examples?Did I miss something?