How I learned Objective-C, Cocoa, and developed an iPhone App

This post was published more than a few years ago (on 2012-04-21) and may contain inaccurate technical information, outmoded thoughts, or cringe takes. Proceed at your own risk.

As I just posted to 43 Things [a site that is sadly now dead — Ed.], I finally shipped my first public iPhone app, so maybe it’s time to look back at this journey and see how it’s gone so far.

It seems like there’s always more and better to learn, but I learned enough to actually ship an iOS app for sale in the App Store, so I’m calling this a win.

How I did it:

I can see several keys to my eventual success:

  • Stick with it. Even though I was learning in spare hours here and there, continuing to attempt progress certainly helped.
  • Find a support group. The assistance and encouragement of my local NSCoderNight group was invaluable. People really do want to help those who are trying to help themselves.
  • Read a lot. I read numerous books and web articles about the things I wanted to learn. It didn’t always sink in the first time, but reading other books and articles on the same subject, with different wording and a different perspective, really helped it sink in with repetition and context.
  • Take time off. I found the real way to boost my learning was to take some time off from my job to concentrate on that and that alone for a week or two.
  • Write an app that you’re passionate about. Even when I didn’t feel I knew enough to write an app yet, the act of writing an app forced me to learn what I needed to do to get the app done, and really sped things along. The three weeks I took off work to code all day and put my first app out into the world was the best boost to my programming knowledge so far.

Lessons & tips:

I think I covered most of those above. Still, my biggest piece of advice is to figure out what app you’re passionate about building, and build that. You’re not going to be nearly as engaged in learning if you’re just building some boring tutorial app.

Resources:

  • NSCoderNight — Find a group near you, and go to the meetings. Usually these are informal gatherings of people actually coding, and asking the occasional question. My local is NSCoderNightDC.
  • If you want a more formal meeting with presentations and such, CocoaHeads or Xcoders may be your thing.
  • The book that was the most help in learning Objective-C is Programming in Objective-C by Stephen Kochan. That book was the first (and only, at the time) to teach you Objective-C from scratch, instead of assuming that you are learning it as an add-on to your existing C knowledge. Since then, Objective-C Programming: The Big Nerd Ranch Guide, has come out, and I would also recommend it, despite a few moments where it assumes knowledge that you might not have.
  • The book I found most helpful for learning Cocoa was Cocoa Programming for Mac OS X, from Aaron Hillegass of the Big Nerd Ranch, but if you’re going to concentrate on apps for iPhone and iPad, you might want to swap that out for iOS Programming: The Big Nerd Ranch Guide.
  • If you’re curious, you can check out my first publicly released app, the Post Atomic Horror Unofficial Episode Guide for Star Trek.

Websites

Websites with articles and tutorials I found invaluable (plus a few newer ones):

Books

Some other books that I read over the course of my learning (updated, plus a few new ones):

Update 2015-08-12

Obviously, a lot has happened since I wrote this post — iOS is about to hit version 9, the new Swift programming language has been introduced, and I moved across the country to be the video producer at a Mac/iOS software company in Seattle.

Sadly, the new job has left little time for me to keep up with my own side projects, but I still keep a close eye on the iOS and Mac development world, since I deal with it every day at work.

I've updated the links above, and here are a few more resources, if you're looking to get started in Swift. That said, learning and knowing Objective-C is still an important skill to learn, since Swift is backwards compatible, and that means there's going to be a lot of Objective-C out there for years to come.

Swift Resources