And SwiftUI seems great on the surface until you spend time with it and try to actually do anything remotely custom. I spent about a week trying to get a swipe gesture able to push the keyboard out of the way (like you see in Apple Notes and most messaging applications). The web is full of half working hacks that throw up warning messages when the app is running. When things don't work its incredibly difficult figure out whats going on. The documentation is atrocious and the debugging tools are absolute rubbish compared to what you'll find in any modern web browser.
Coming back to writing typescript in VS Code or writing rust in Intellij felt like a breath of fresh air compared to working in Xcode. Everything works, and it works fast and reliably. I have good documentation and I can read the code I'm calling if I get confused.
I really like Swift as a language and I think Apple has a lot of great ideas there, but developing a swiftui app using apple's developer tooling was a miserable experience. Xcode feels like a cobbled together, buggy mess.
> Coming back to writing typescript in VS Code or writing rust in Intellij felt like a breath of fresh air compared to working in Xcode. Everything works, and it works fast and reliably. I have good documentation and I can read the code I'm calling if I get confused.
Some of the tools we use are fast because they have less or no baggage, and some aren't because they have tons. In terms of what Xcode tries to accomplish, it fairs better and is capable of more than any tool I can think of, but there's no way it could compete with anything else that has a relatively austere set of requirements. It is indeed a cobbled together buggy mess, but I just don't think you get 20+ years in without a bit of that.
IntelliJ is an interesting example in that they have managed to build tools that are both rich with features and somewhat performant, and to your implied point, they probably have to in order to compete; if all Xcode did was compile raw Swift and let you visually debug, it would almost certainly lose that fight. Maybe VSCode or Nova will usurp Xcode, and make the experience of just writing Swift and SwiftUI faster against Foundation, AppKit UIKit, etc.. but then you'll need to still likely run it on some emulator, potentially analyze performance issues, preview layouts visually, maybe run cloud builds, configure CoreData models, blah blah blah. Not all the time, but it's there.
Comparatively, other tools just delegate responsibility to other huge projects that haven't always been around or all that great or not great enough. Writing any web code without Chrome or Firefox devtools would suuuuuuck, and ultimately that's usually what I'm doing. Webstorm and VSCode are.. ok at the full package I guess, but not as good as discrete applications.
Webpack is also miserably slow and arcane compared to esbuild or vite, but have their own limitations.
Hard disagree on this. I can't think of any IDE that performs as badly, or is as unreliable as Xcode.
Intellij is significantly more complex and its still more responsive. (And its reliably responsive. I've never experienced typing lag in intellij on my M1). Xcode will lag even when I have plenty of cores doing absolutely nothing. As far as I can tell, the xcode UI doesn't seem to be in a separate thread from autocomplete queries. So if there's work happening "in the background" (like looking up function signatures for autocomplete), typing becomes janky. Intellij does seriously well for itself given its written in Java, and it doesn't use native controls. And it handles about 10 different languages. Xcode honestly has every advantage here, but still manages to drop the ball.
And if you want to say xcode has been around for longer with more technical debt, well, Microsoft's Visual studio (not vs code) is honestly fabulous compared to xcode. VS is of a similar vintage to xcode, with just as many "cobbled together" features added over the years - from VB to C# and .net, winforms to WPF to whatever the latest thing is. But its still fast and reliable. Well, its fast and an order of magnitude more reliable than xcode.
And for the record, its a really bad look when the people writing developer tooling can't develop code very well. I expect better from Apple.
Well then, great material for an interesting dialogue :)
> Intellij is significantly more complex and its still more responsive. (And its reliably responsive. I've never experienced typing lag in intellij on my M1).
I don't know if even the full IntelliJ is more complex, but it is at least quite complex while being reliable, and deserves a lot of credit for that. I've always defended it, particularly for it's robust semantic full project search capability for which it also happens to do better than XCode. If they brought back or renewed a product for building against Apple platforms, I'd consider it. My main argument is that it would be a truly remarkable feat for any company or project to compete with Xcode and reach close to feature parity without relying on features already part of Xcode. It still supports building and compiling (based on a cursory search) Pascal, C++, C, ObjC, ObjC++, and even Python, Java, and Ruby, simulation on at least 6 different platforms/device types, interface building click and drag for mac and iOS, some kind of AR/VR environment, and I think is used to build itself. I'd use PyCharm though if building any sufficiently complex python app, and Android Studio presumably for that, so some of the theoretical capabilities of Xcode are already better served by others. A hypothetical competitor shouldn't try to replicate all of those though, instead shooting for a market of anyone who's developing for the last 10 years of platforms in just Objective-C, Swift, SwiftUI would be the move.
> Microsoft's Visual studio (not vs code) is honestly fabulous compared to xcode. VS is of a similar vintage to xcode, with just as many "cobbled together" features added over the years - from VB to C# and .net, winforms to WPF to whatever the latest thing is. But its still fast and reliable. Well, its fast and an order of magnitude more reliable than xcode.
You're probably right, but only has relatively recently had a mac version, otherwise I'd be working with what I'd anecdotally say is just an annoying as hell and unstable OS where all the legacy stuff is still highly visible. I've never pushed Visual Studio hard, but I do recall it being as decent as you say.
Ultimately what I'd like to see is more diversity in the native apple platform dev space, and for the Xcode team to confront the reliability and performance problems you mention and everyone experiences. I believe they introduced a new linker last year for example, and hope to see it improve dramatically. Maybe the right move for them is to build a much more nimble first-party sibling solution. I'm not even on an M1+ yet, still this shitty Intel thing, and I hear these issues daily when my jet engine spins up.
Building a good, reliable, fast IDE with modern features is clearly a task other software teams have been able to succeed at. Xcode has no excuse for its bugs. It feels like the result of demo driven development - where features are worked on just enough to demo them - either internally or at wwdc. But it takes more work to ship a good product than it does to make a snazzy demo. And, for some reason that work just doesn’t seem to happen in the Xcode team. Not since Xcode version 3 or so.
My least favorite thing is when the compiler takes a look at my view body and times out trying to infer some kind of generic, and the tells me “hey this 100 line code block has an error, but we don’t know where or what exactly” so I have to comment out code until I find the specific call expression.
I've written code in a bunch of languages and it's the first time that a compiler refuses to compile something, but can't tell me why or which expression is incorrect. "There's something wrong with your function" then I have to go play type checker and hover over every expression wondering what the issue is? I'm just shocked about it every time it happens.