Hacker News new | past | comments | ask | show | jobs | submit login

Years ago I decided to delve into learning Swift and native iOS development. I simply could not get accustomed to using XCode. The UI/UX of XCode is atrocious in a way that I’m struggling to articulate. I found myself constantly opening and closing panels just to click on icons that weren’t intuitively grouped together. To open one panel would forcefully minimize the other. It’s like a tenth of my time was dedicated towards “panel jockeying”.

I got the sense that Apple’s designers wanted to make an IDE that was visually pretty and minimalistic, not one that was low-friction for the developers. But IDE’s aren’t supposed to be minimalistic, they should be allowed to be as customizable and cluttered as each individual developer would like, according to the needs of what they trying to build.

Imagine a physical garage workstation. Whereas Visual Studio would let me make my workspace as cluttered and customizable as I would want, Apple would insist that I put each tool back in the box before grabbing the next one. This is what I mean about panel jockeying.

I’m curious if other developers feel the same way, of if my analogy makes sense.




This really speaks to me and is exactly what stopped me from my multiple attempts to get into native Mac/iOS development - the IDE. Your assertion of form over function has helped me articulate what I hated about xCode - so thank you for sharing.

I've been in the JetBrains ecosystem for over a decade now and while there are faults, I've never felt that JetBrains wasn't designing their IDEs to work how I wanted them to work.


I'm sad that AppCode is being abandoned instead of updated for the new SwiftUI world.


I agree that Xcode usability is absolutely horrible. It's also unbelievably slow and it's crashing so much it would never survive an App Store review.

But what really turned me away from making native apps for Apple platforms is the combination of bugs and lack of documentation.

SwiftUI was just not fit for purpose when I last used it a year ago. But even more mature libraries are often barely documented. It's hard to know what's obsolete.

The advantages of native apps for my work are small to begin with (from a user point for view). It's mostly about more reliable local storage.

If productivity is so much lower than making web apps it's impossible to justify the cost and the extra risk putting myself at the mercy of some oligopolist overlord.


Really depends on development style and what you’re used to, IMO.

Xcode doesn’t bother me at all while Android Studio, which is built around the vaunted IntelliJ, is constantly getting on my nerves. Visual Studio (the IDE, not the editor) is similarly frustrating and has odd restrictions to boot (I can’t use italics in syntax highlighting? Why??).

This goes for editors too. I find VS Code mildly irritating in ways that Sublime Text and TextMate aren’t.


I would agree. Most times I look for something simple to find in other IDEs (Build Output, Project Settings, etc), I get lost easily and have to search Google on how to open that pane.


IMHO XCode is both great and terrible. I miss it when I'm in vscode, but I also hate it when I'm in XCode, if that makes sense?

It's like a heavy IDE of yore, which means the more you comply with it, the more you'll enjoy it—but that also leaves a feeling that you're not really in control.

It's definitely worse than it could be if Apple cared enough to make it half as snappy as vscode feels. The shitty support for vim keybindings alone makes me furious (e.g you can't redo most actions like "c" or "r")

Finally, I'm not sure if you were using SwiftUI back then or if you were fighting with storyboards in UIKit. The latter is an ATROCIOUS experience I wouldn't wish upon my worst enemy. SwiftUI in comparison feels like the future, even if it's still in its early days and some stuff needs to be ironed out


Storyboards are indeed terrible. XIBs are notably better due to not bogging the editor down with N screens but still not great. Both suck for version control being gigantic blobs of machine generated XML.

This is why I abandoned storyboards and XIBs in iOS development 7-8 years ago. UIKit is actually a pretty decent code-only experience, particularly since the addition of anchor-based autolayout constraint building.

It was actually a major point of frustration that it’s not practical to go code-only with Android Framework on Android and WinUI/Windows App SDK on Windows, both of which are heavily invested in XML layout and resource files. Jetpack Compose thankfully fixes this on Android at least.


> Storyboards are indeed terrible. XIBs are notably better due to not bogging the editor down with N screens but still not great. Both suck for version control being gigantic blobs of machine generated XML.

I guess these problems stem from their heritage in XIBs being NIBs, i.e. binary “deep frozen” object graphs.

Using XML to make them version-control “friendly” was always a bit of a crutch.


It also doesn’t help that Xcode will make random little edits to storyboards/XIBs by simply viewing them. It conditions developers to commit minor changes to these files without looking closely which leads to unintentional changes finding their way into production.


I agree. Another thing I really dislike about XCode is the error/warning messages – you stop typing and wait with bated breath for them to appear, only for them to be positioned over the very line of code you’re trying to debug and can no longer see.


Everyone feels this way about Xcode, right? It’s a relic of the 90’s.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: