It's Saturday morning and I'm slowly decompressing from spending the last seven days in what is easily the most intense training I've experienced in my life. I've just returned from Big Nerd Ranch's "Beginning iOS" class and I'd like to share my thoughts on it. This post is separated into two sections. I'll begin by talking about the class itself and then share my thoughts on Objective-C and iOS in general.
Big Nerd Ranch's (BNR) Objective-C/iOS course covers 7 days of training. Technically 6 I suppose if you count the day you arrive, but honestly it feels like about 12. The course is split into two parts. For the first two days you are trained in Objective-C. This gives you the foundation then to spend the rest of the time learning iOS development.
The first thing you may ask is the price. Let's get this out of the way. It isn't cheap. At $5200 you could buy a Macbook Pro, an iPad, an iPhone, and more than a few books. But this is how I look at it. At 6 days of training, you are looking at less than 1k per day of training. That's more than fair, heck, a bit on the cheap side. You can't hire me for 8 hours for less than that. The price also covers hotel, food (three meals and snacks) and transportation to and from the airport. It gets better though. You also get access to forums for support before, during, and after the course. These forums are active and your instructors participate. Once you take a class you can use these forums any time in the future, which is great since it takes time to really process what you've learned.
If you don't bother to read the rest of the review, let me be absolutely clear. I feel like the price of this course is more than fair! To me it was worth every penny (although my company did pay for it).
From the moment you arrive for a BNR course to the time you leave, every need is taken care of. The instructors were kind, patient, and had great personalities, which is important since you're spending so much time with them. It really seemed like every little detail was thought of. Consider this:
The classroom had these little stands for your books. This let you prop up the book while you work. And yeah - it is a small thing - but its details like this that just made me felt like these guys really thought of the small details.
Oh - and the books? Easily two of the best technical books I've read. Both were very clear, easy to follow, and had great sample apps and challenges. While I obviously recommend the training, if you can't make that then I'd easily recommend either of the books by themselves as well.
I mentioned it above, but I want to call out the instructors by name. The first two days were covered by TJ Usiyan. The rest of the course was taught by Mark Dalrymple AKA the guy who taught us basic balloon bending.
The course progresses well, and I feel like I ended up with a good understanding of both the language and the iOS platform. I certainly won't pretend to grok it 100%. iOS is incredibly deep, which I suppose shouldn't be surprising, but I feel like I could build an application now. It certainly wouldn't be a great app but I could build one - and that's empowering. This morning I was looking at some PhoneGap Objective-C code and all of a sudden I realized - I know this! Maybe this sounds a little bit sad, but I was overjoyed.
So what were the negatives? Only one. One of the things BNR tries to do is provide an environment where you can "get away from it all" - the idea being that you can focus 100% on the learning and not be distracted. The location we visited, Historic Banning Mills, was beautiful. Located out in the woods about an hour from Atlanta, the environment was wonderful.
The bad thing though was that both cell coverage and wifi were incredibly poor. To call my wife I had to trek up a hill five minutes to get a decent signal, which worked most of the time but not all the time. If there was an emergency, there was a way for her to reach me (she would need to call Banning Mills and they would find me), but this was pretty annoying. I miss my wife and kids when I travel and talking to them once a day is something I look forward to. Wifi coverage was poor - and I don't mean "typical hotel poor" but "56k dialup" poor. I discovered early on that I didn't have the 7.1 SDK on my laptop, so I couldn't deploy to my device. This didn't impact training at all (the only thing I couldn't do in the simulator was the parallax example), but I would have liked to download the bits so I could. That's something I could have, and should have, taken care of beforehand, but it would have been nice. I also would have packed some digital movies to watch since Netflix was out of the question as well. All in all this was a minor issue and in no way would have prevented me from attending, but it got more bothersome after a few days. Being separated from distractions is a good thing, in general, but as a practical manner for such a lengthy course, I think I would have preferred staying at a boring hotel in the city. I'm probably in the minority in that respect though.
As it stands - after mentioning the wifi issues to a coworker, one of the BNR founders chimed in with this:
So yeah - they get it - and it will be fixed. Cool. So I know I said above I'd recommend BNR training, but I'll just say it again. This was incredible. This was so damn incredible I'd seriously consider their HTML5/jQuery course even though I think I'm pretty much an expert already. I definitely want to attend their advanced iOS class once I've had time (and more experience) with iOS.
Before attending the BNR course, I had no experience at all with Objective-C. I had a tiny bit of experience with C coding MUDs back in college, but honestly, the only thing I knew about iOS development was via web standards and PhoneGap. I found Objective-C to be fascinating. Ash Furrow wrote a great blog piece on it, Why Objective-C is Hard to Learn that I think encapsulates exactly what my feelings were. The first time I saw bracket notation I was completely freaked out. Luckily the instructor made it clear - but it definitely took me a day or so to get over my mental block seeing the notation. Now it almost feels natural to me, but it isn't like anything I've encountered before.
On the iOS side, I was very impressed with the power and flexibility of the platform, especially in terms of UI frameworks. It was cool to see all the different ways you could build application views and tie them together. Cool and overwhelming. Outside of UI, the depth of resources you have available to you -- in terms of graphics, data, processing in general -- is amazing. I guess I shouldn't be surprised - people have been building great iOS apps for a while, but I finally had a look into how these apps were built and I think I could do it too.
Finally - if there is one thing that I really changed my opinion on it is XCode. I've used XCode a lot over the past few years via PhoneGap, but honestly I didn't do much in it. XCode looked ugly - confusing - and actually made Eclipse seem simple. I was so, so wrong.
One thing that I think this course really did well (and I don't think the books alone would do this, it was really the instructors) was demonstrating how darn powerful XCode is. Time and time again they would demonstrate something and I'd just get more impressed. There was one example at the end - and I'm kicking myself for not snapping a picture - where the instructor demonstrated how XCode actually drew arrows on the screen to demonstrate a possible logic flow that could lead to issues. Drew arrows and explained exactly how the issue could come about. Yeah, that's the kind of thing you read in marketing and figure it's BS. While I coded, I'd occasionally screw something up and XCode would tell me, "I think you mean ..." and it was right. Every. Single. Time. Honestly I don't know why Apple stopped charging for XCode.
Ok, time to hit the yard.