I’m a believer in the Apple esthetic. That is I believe Apple products are well thought out, and they put effort into design and user experience that no other software or computer company does well. Yes there are other good companies and good products, there are certainly more clever products, but I believe as a whole the Apple products and the company philosophy provide for a better user experience.
That being said, it doesn’t translate everywhere, especially in the tools and software they provide developers. Maybe it speaks to different areas of the company (run with different philosophies), maybe it speaks to an idea that developers “don’t care” about usability, maybe it’s just too much and the level of effort is costly.
As a developer of Mac and iOS software, I’ve been working with the provided tools in the Xcode environment and the website deployment for a while now. Some of the process is like the end user experience. I click a few buttons, enter some code, and my product appears on their website to be delivered to users. I know a lot is going on there that I don’t have to handle (because the work I do elsewhere requires me to handle all that myself).
But, when it goes wrong or you push on the edges, the veneer comes off. Even simple things.
For example, the website where you push your applications. You’re presented with a very simple interface, clean. But as you click through the few choices, the look and feel changes. Most of the site is consistent, but enough is inconsistent that you can tell they were created and maintained by different groups, so different it feels they aren’t even aware that the pages are integrated (otherwise who would allow such a difference?). For a company that puts such care in packaging and delivery and making the user experience magical, its surprising that this experience is so different, making one wonder if it is even part of Apple.
As for Xcode, I’ll site more software examples than UI (or a combination). The development environment has a similar feel, that is a lot of it is smooth and looks like there is real effort there, but then you do something like oh, say read the documentation in the various SDKs, and it feels incomplete, rushed.
There are places where there is no description of a method at all, places where it describes it the way a child would try to survive being called on in class when they didn’t do the homework, and then places where you are thrown into ancient archives (the doc looks like it was written for a long ago abandoned part of their product).
Then there are storyboards, and a recent experience I had working on a Mac version of our iOS applications. I was taking the opportunity to create a Mac version of ‘Whethr’, a simple weather application that presents daily weather information. As I worked through this things moved quickly, until I tried to add a collection. These were hard enough in iOS, but in Mac development it was a step harder. Using the storyboard to create triggered segues wasn’t working, no matter what I did. Looking online led me to the fact that this was “deprecated” for this object, not any other that I was developing! Online, others talked about how you had to do it outside of storyboards (I eventually got it usable in a storyboard, but it wasn’t magical). No other element worked like this, and it worked in iOS development. All this says to me is some bug occurred, someone made a decision not to fix it, so this part is left dangling, like an unfinished road that turns to dirt.
SwiftUI, which seems like a move away from storyboards, really feels like they are working hard to remove any sort of GUI based design from UI design, acknowledging it is hard. Yes, I do get that SwiftUI code layout is a more intuitive way to build, but it is far from complete and surprisingly rigid. It does show promise, but I haven’t found a fit for it as it works now. And like what I describe above, gives that unfinished and off road feel to many areas.
Don’t get me wrong, I don’t think Apple is worse than other companies. I’ve worked in much harder environments, and I can’t say I can point to a better environment overall. My experience with Microsoft development and Java Development exposed similar problems. But, all of this is odd from a company that I feel prides itself on design and the user experience, and in these cases the developer is the user.
Maybe it’s not odd, just disappointing, like buying a house. When you first move in everything is great and exciting, and then over time you see the cracks, the cabinet that squeaks, the door that doesn’t quite close. The jumble of wires in the fuse box.