Learning Objective-C in 2017 sucks

Recently, I’ve been trying to learn Objective-C as a work-related “gosh that sounds fun” project. I have excellent resources available in the form of my coworkers, and I’m generally quite confident with my ability to find what I need through careful googling, so usually my biggest blocker is myself.

Not so with Objective-C! With the release of the Swift language nearly three years ago, it seems that a lot of folks have jumped ship. And to be honest, living in a city with a spectacular swift-related yearly phenomena (Vaux’s Swifts come to Chapman Elementary and swirl into the chimney each night), I am charmed by even the name of it.

But I hear there’s still plenty of legacy Objective-C code out there, and there will be for some time. I also hear that there are still reasons to use it sometimes. (For me, one of those is “our customers still use it, and I can better help them if I understand this.”) So in I dove.

There are plenty of existing Objective-C tutorials and getting-started guides, which were once regularly updated, but that seems to have ground to a halt a few years ago. Lots of dead links. Lots of “actually just learn Swift.” Lots of “newly updated for Xcode 6!”, which was released in September 2014, or Xcode 5, released in September 2013. Ouch. We’re on Xcode 8.x now.

My discoveries, though much more extensive, went roughly like this:

  • There’s the Ray Wenderlich “archive of tutorials that we are no longer supporting.” This seems to be the gold standard. It is fine, except for much of the information is almost four years old at this point. Eep. Do you know how much XCode has changed since then?
  • There’s another site which suggests that you don’t even need to have your own environment set up to learn it (they suggest you can use Linux or Windows, which is going to be a bad time for something that’s clearly Apple’s domain).
  • I emailed the author of one site (who has created a ton of tutorials, previously in Objective-C, now in Swift) and asked if he had any recommendations. He told me he didn’t teach Objective-C anymore and suggested checking out the Wenderlich resources.

I talked to one coworker, then another (a member of the CocoaPods core team, so I figured she’d have access to more information). She checked with her people. Wenderlich again.

I was beginning to feel a bit of despair — as much as I love the idea of finally becoming the self-sufficient reverse-engineering hacker that I am probably, as the child of engineers, supposed to be, I also really love having clear information when it comes to learning a new skillset. It is easier to learn good habits than to unlearn bad ones. It is also easier to learn from current information than from something that’s four versions out of date.

First lesson: tell people about your problems. I’d complained to my manager about this paucity of resources a few times, but last week he said, “hey, look what I found,” and sent me a link to Coursera’s Objective-C course. I don’t even know how he found it (I think it was an accident), but it’s great. It is gently out of date — I have had to google one setting in XCode so far (the size classes checkbox is now “trait variations”). But it’s got an excellent tone, good pacing, and the option to care about it with money if you want. (I’m happy auditing it.)

I’m going to continue on with that for now: I have at least one app I really want to exist, and I’d rather make it myself. Finally.

In some number of weeks or months, I’d love to add a subtitle to this post’s title: “but it’s worth it.” Time will tell! In the meantime, I intend to keep writing about this quest. Surely, someone else out there is right there along with me.