16 Nov 2013
This has been a busy year in iOS learning and development at the Center for Advancement of Learning and Assessment (CALA). We familiarized ourselves with Objective-C and iOS and built our first app, CALA Learn.
CALA Learn delivers learning modules that are produced by our assessment experts. Our 1.0 release is very much a minimum viable product, and we will iterate and add more functionality and content in subsequent releases. Before we began, I looked into what resources would be best for our team to start learning with. The materials I describe here are the ones we found most useful so I would like to share that with you.
When I’m learning a new language or framework, I like to do a sort of total immersion approach, mixing books, websites, videos and podcasts. This way I’m learning about the language and framework, as well as the community of developers that thrive in it.
I have also come to the general realization that the best way to learn is to always be building something. If you already have an idea, great! Otherwise pick something. For me, CALA Learn represents the best mix of my own interests and those of my team at CALA. Don’t fret if you can’t come up with a great idea. Make yet another version of something that’s already widely available — you’re in this for the learning right now.
Objective-C Programming: The Big Nerd Ranch Guide
This book begins with an overview of C, which is essential since Objective-C is a superset of C. I found the C overview to be of appropriate depth as a preparation for Objective-C. The second half of the book teaches Objective-C fundamentals. Most of the major concepts are covered. Upon completion of this book, you will have enough Objective-C under your belt to continue to the next BNR book.
At this point, if you feel more comfortable building language skills before learning the iOS frameworks, you should check out Zed Shaw’s Learn C The Hard Way. This might be more C than is required right now, but some of the iOS frameworks you will use later are exposed as C APIs. Personally, I prefer to learn programming languages alongside whatever frameworks I plan to use. That’s the approach I found worked best when I learned Ruby on Rails as well as iOS.
For a slower-paced, but a bit more thorough treatment of Objective-C, check out Programming in Objective-C by Stephen G. Kochan. If you’re a Ruby programmer familiar with the excellent Pickaxe book, I think this is as close as you will get in an Objective-C equivalent.
iOS Programming: The Big Nerd Ranch Guide
Now that you have Objective-C fundamentals, the next step is to begin learning the iOS frameworks. I think that iOS Programming: The Big Nerd Ranch Guide is the best book to begin with. You get a great overview of the technologies that make up an iOS application as you build a few apps. The 3rd edition provides coverage of building your views with XIBs as well as an introduction to Storyboards. Included is an introduction to Core Data and several other important frameworks. This book is a well-rounded, not-to-difficult beginning to iOS programming.
If you have the money and time, The Big Nerd Ranch hosts classes and bootcamps. From what I have read their bootcamps are outstanding. My wife and I were expecting our second child so a week in Atlanta wasn’t an option for me.
As you are going through the BNR books, subscribe to NSScreencast and take 10 minutes every so often to watch a video there. Ben Scheirman does an outstanding job of presenting concepts clearly and puts together really nice screencasts. I find it’s good to mix multiple media when learning a new subject. Provisioning apps and devices is covered and I found it was easier to get an understanding of how that works with a video.
Code School has developed an iOS path with five courses (at the time of this writing). I have experience with their Ruby on Rails courses which are fun and engaging. I’ll be going through their iOS path in the near future, even if it’s just for review at that point because the Rails courses were that good.
Lynda.com offers a collection of beginning iOS programming courses that are worth checking out. As an FSU employee I have a free Lynda.com account, so I mixed in a couple of these courses. Overall I think that these courses are okay, and at the same time rather optional since they overlap with the other beginner material in this guide.
Take some time to get an RSS reader set up with subscriptions to popular iOS blogs. Here are the ones I am subscribed to right now.
- The Joe Conway Blog
- Ray Wenderlich
- Peter Steinberger
- Neglected Potential
- iPhone & Mac Development
- inessential by Brent Simmons
- iDevBlogs - The Best On iOS Development
- iNVASIVECODE Blog
- Collin Donnell | iOS and Mac Developer
- [iOS developer:tips];
Also spend the 99 dollars for an iOS Developer account and start watching the WWDC videos that are relevant to what you are learning at the moment. Mixing in these videos will help round out what you are learning in books. You’ll need the account to test your apps on your iPhone or iPad anyway so this is a necessary expense.
CS 193P: Developing iOS7 Apps for iPhone and iPad.
As you are finishing up the BNR books, you are ready to watch the first lecture of Stanford’s CS 193P on iTunes U. Paul Hegarty’s Developing iOS 7 Apps for iPhone and iPad is a challenging, rewarding tool for learning how to build iOS applications. This has been the most valuable tool for our team on the way to becoming proficient iOS programmers. Do yourself a favor and work through each of the homework assignments — valuable lessons await you there. If you finish the current offering of CS 193P, check out the older lectures from prior semesters of the course. The homework assignments are different and you will get exposure to how older versions of iOS work which could be useful if you would like to support older versions in your apps.
At this point in my learning, a few things were giving me tension. Both the BNR book and CS 193P begin with using the Springs and Struts layout system, and introduce Auto Layout along the way. Auto Layout is ultimately the way to go — it’s a forward-thinking layout system capable of adapting your layout to multiple viewport sizes. But the learning curve is steep. We used Auto Layout exclusively for CALA Learn but it slowed us down at first. My suggestion is to go with Springs and Struts for a while until you get a good introduction to all of the iOS frameworks. Then when you area ready, spend some focused time studying Auto Layout.
Another issue I was struggling with was that we were developing CALA Learn when iOS 7 was in beta. I was listening to Marco Arment and Dan Benjamin discuss this issue on their now defunct Build and Analyze podcast, and Marco was leaning towards iOS 7-only support for his new apps, and weighing the options for his established app, Instapaper. At first we were making CALA Learn as an iOS 6 app with the intention of supporting iOS 7 later on. With the iOS 7 release date looming, and with Apple’s suggestion that developers design for iOS 7 and backport to earlier versions, I decided CALA Learn would be a purely iOS 7 app. We have a small, targeted market for our app and I am comfortable serving only users who are running iOS 7, which has an adoption rate of over 75% within two months of release according to Mixpanel.
As you are working your way through CS 193P, Paul Hegarty will ask you to begin using Apple’s documentation to complete your homework assignments. Now that you are an intermediate beginner, this content will be more digestible. Pick a topic and do an occasional exploration to supplement your coursework. It can also be useful to read through the header files for the APIs you are using up to this point — letting your brain index what’s available and reading the comments in the code can help out later.
Being aware of the community of developers that are working in your technology of choice is both rewarding and valuable. It’s nice to know what other people are working with, what’s challenging them, what’s working well for them and so on. It also gives you exposure to people you might be working with in the future. It’s good to be prepared. Twitter, Podcasts, and IRC are good ways to connect to the iOS developer community. We don’t have a user group in Tallahassee, but you might have one in your area. If you do, take advantage of it.
Follow enough of the more outspoken iOS developers on Twitter so you can be aware of the discussions that are going on in the community. You could begin by checking out who I am following.
If you have questions, its good to be able to reach out to other programmers who have struggled with the same things you are. The #iphonedev channel on Freenode is a great place to ask and answer questions, or to hang out and watch the conversation.
I found several podcasts interesting for a budding iOS programmer. Here are the ones I am currently subscribed to. I spend my drive to and from work listening to these. It’s not quite enough time to keep up with all of them, but I try to catch the episodes that are most relevant to what I am working on.
- Developing Perspective
- Core Intuition
- Identical Cousins
- The iDeveloper Podcast
Find out who the podcasters are and follow them on Twitter.
As we finish up our CS 193P coursework and prepare to ship the next release of our app, I’ll be looking for other resources to push us along. I have already bought and started reading Erica Sadun’s books: The Core iOS 6 Developer’s Cookbook, The Advanced iOS 6 Developer’s Cook, and iOS Auto Layout Demystified. Each of these books gives particular topics far more in-depth treatments than does the BRN book, so I think that they are good leveling-up books. I’m also working on a couple of ideas for another app to build.
Best of luck on your iOS journey!