I’ve been using Xcode since 2011, when Xcode 4 had just been released. Those were turbulent times, with Xcode 3 and Interface Builder having previously been two different applications, and Xcode 4.0 was the first “one app does all” approach to building iOS and macOS apps.
I remember Apple bringing out incremental upgrades every few weeks, with the jump from Xcode 4.1 to 4.2 being quite a leap in regards to features and/or the way you had to do things, coinciding with the release of iOS 5 and iCloud.
I’m telling you, turbulent times.
Xcode 4.3 was the first release to be distributed via the Mac App Store instead of a ZIP file from a hidden section in the Developer Portal. Upgrading wasn’t always easy slash possible, and I had more than one new version that just didn’t want to replace the existing one. Beta versions could still be installed side by side with the “release” version from the App Store, but the latter was from now on the only way to submit apps to the App Store.
Xcode 4 stayed with us for a while and let us program anything and everything up until iOS 6.1 and macOS Lion, until June 2013 when Xcode 5 was introduced. From when on, Apple chose to increment Xcode version numbers with each passing year until now, in late 2018, when we’ll soon be submitting our apps with Xcode 10 (which I haven’t even tried out yet).
I have to be brutally honest with you when I say that Xcode 5 was probably my most favourite release out of all the versions there have been. But I kept upgrading to Xcode 6, 7 and 8, being a little underwhelmed by how much more stuff Apple were trying to cram into their IDE every year. Poor Xcode!
With Xcode 6 came a new logo as well as Swift, which changed major versions what felt like every 12 seconds, and code from last week wouldn’t work anymore when used with a minor version update a week later. What a disaster! We also got Playgrounds and some more monitoring tools to play with, and – although clunky and frustrating to this day – Apple tried their best to make those evil provisioning profiles as automated and easy as possible.
When Xcode started turning into a buggy nightmare
There came the point at which the reviews on the App Store for our favourite IDE have been getting less and less kind. I remember the first bad reviews flying in when people had issues upgrading their version of Xcode. That was the most common complaint during the Xcode 6 and 7 era. Other than that, people seemed more or less happy with their development tools.
I remember Xcode 7 or 8 introduced a change in the way code completion works. All of a sudden we had to press ESCAPE to bring up the code completion dialogue. That’s not really a major issue; but what I do have a problem with is that such a major change is not mentioned by the developers who bring us Xcode. How about a fancy little dialogue box, telling us such changes when the new version starts for the first time?
Us small-time developers, we’re people too! We’re human. We’re not telepathic (as perhaps most Xcode developers are). Would it kill you to be nice?
Well maybe – you never know. I’ve filed so many bug reports for things that were quite obviously broken with our favourite IDE over the years, but all I ever heard was “yeah, we know about this” (duplicate issue) or “the sound of silence” (Apple’s way of saying, “look Jay, we do not give a flying bleep about what you think, you pathetic moron”).
Perhaps Xcode devs never get back because those who looked into bug reports may have died a painful death. I guess we’ll never find out.
Can Xcode get any worse than Xcode 9?
With the current release of Xcode 9, the star ratings have finally tipped. Xcode had up until recently always had more favourable than negative reviews. Now, in September 2018, it’s the other way round: the latest release is soon going to fall below a three star rating, as the one star reviews appear to increase.
Many reviewers openly admit that if there was a zero star option, they’d happily choose it.
How did Xcode get so bad? What is it that’s annoying the bulk of reviewers so much? What’s wrong with our poor Coding Buddy, the one piece of software that accompanies every iPhone and Mac app we create?
Bugginess is one thing that keeps coming up more and more. On the coding side, things seem fine, but when it comes to once working aspects of Xcode (such as Interface Builder), users seem to experience random issues.
Auto Layout has been criticised since its inception. I still have no idea how to make a button appear in the right spot on 479 different orientations and screen sizes, and instead opt to create several predictable storyboards. Nobody on the planet has yet been able to explain to me how this idiotic nonsense works. Even Apple have admitted that it’s too complicated for most users, and have given us the Stack View so we need less constraints.
Playgrounds, the super nice way to introduce new users to Swift (or more accurately, “the cute way of showing it down our throats”) is only borderline usable in Xcode 9. And it was such a cute idea when it was introduced in Xcode 6 in 2014. How come it’s all but falling apart three years later?
Did I mention font sizes? They’re getting smaller and smaller, probably because “everybody has a Retina display now, and we can stop caring about the non-Retina retro crowd… because they’re cheapskates anyway… everybody should be dropping at least $5,000 or more every year at the Apple Store”. Yeah. Sure. However, folks like me don’t have Retina displays – and no plans to upgrade to one in the near future either.
One thing I find mildly annoying about Xcode 9 is how Apple have – yet again without telling anybody – changed the way we have to collapse methods now. I’ve grown quite fond of that little triangle we had up to and including Xcode 8, with which long code sections could be turned into a single line. Since Xcode 9 we have to hit CMD + ALT + SHIFT + Left Cursor to collapse EVERYTHING, then expand what we’d like to see.
Why? And why without telling anyone?
One reviewer went as far as calling Xcode 9 “the worst Xcode yet, a total joke”, and 236 customers found this helpful. Go figure!
The list of issues goes on, and with recent changes to the way Bug Reports shall be handled (as in “all Bug Reports will be ignored from now on”), there’s just no predicting what Apple will screw up next. It’s very sad indeed!
By continuing to not care about these very real issues, Apple are shooting themselves in the foot… or are they – once again – simply admitting that deep down, they really don’t want people like you and I to develop apps for their precious devices? If you’re a major force in the app market, and if you can make Apple $1M per hour, I’m sure they’ll roll out the good stuff. But garage coders who barely make their annual membership fee back? Seriously, why would anybody care about us?
We’ve heard you, Apple. We’ve heard you loud and clear.
What can we do about this whole Xcode mess?
The good news is that we have options. The latest Xcode release is only really needed to SUBMIT apps to the App Store… no-one is forcing us to WORK with it while we’re building applications.
I’m still very happy with Xcode 8.3.2 on my laptop. That’s not even the latest Xcode 8 release (which was 8.3.3 I believe). My MacBook doesn’t even run High Sierra yet, nor will it be able to run Mojave. I’m very reluctant to upgrade the software right now because… everything “just works”. I’d very much like to keep it that way.
One of my 2012 Mac Minis on the other hand is quite happy to run the Mojave beta, and probably Xcode 10 should I dare to install it, and I can use it to submit apps that way. But for daily coding in a coffee shop? Pick an older Xcode version and enjoy! It works for me.
In case you didn’t know, you can even install multiple versions of Xcode on the same machine. For example, a beta pre-release and the release version. Or the release version and an older version. One can be installed via the App Store, the other can be downloaded from the Apple Developer Portal (the direct link to all Apple Developer downloads is here and requires a valid Developer Account).
AppCode is an Objective-C / Swift IDE with all the features we know and love, just better, developed by an independent party (and NOT Apple, screwer-uppers of Xcode). It does come with a moderate price tag of $199 per year (or thereabouts), but for teams who make money on the App Store and who can’t afford Xcode screwing up their workflow, the option is there.
It doesn’t hurt to give that trial version a go and discover that there might still be some joy hidden in the art of app development.
Remember “joy”, the reason most of us started looking into iOS Development in the first place? Ah yes, joy, I remember it well… it’s the thing that Apple are so frequently trying to destroy with every WWDC… nurse, where’s my medication…?)
Anyway… things to take away from this article:
- older versions of Xcode are perfectly capable of handling day to day coding tasks
- the latest version of Xcode is only needed to submit apps
- don’t feel bullied into using all the latest and greatest features Apple introduce
- Xcode is not the only iOS/macOS IDE out there
- you’re in charge of your computer – NOT the “upgrade” dialogue box
OK. Rant over. Thanks for listening.