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:
@raymondcamden @GarthDB Sorry about the internet. I know it is no comfort today, but we are getting fiber service in just a week or two.— Aaron Hillegass (@AaronHillegass) March 18, 2014
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.
Thanks for the review, Ray. I've been learning iOS and objective C (and Xcode) for the past few weeks as well. I really wish I had the opportunity to do it the way you did! Like you said, objective C is a really different critter and it would be nice to have a human to ask questions to in person. I've been doing "The Complete iOS 7 Course - Learn by Building 14 Apps" on udemy.com. There's no balloon bending, but the course is excellent and might be a great alternative for folks who can't afford BNR or spare the week.
Great post, you can help with phonegap plugins now.
I liked the BNR iOS programming book a lot, I've read it almost three times, first the spanish translation of the 1st edition, then started the second edition, and just before finishing it the third edition came out and started reading it instead of the second. I should read the 4th too.
I considered going to the BNR camp in Netherland, but it was too expensive to me ( even if it worth the money, but it's like 2 months of my salary), so I went to a course in Spain by one of the BNR teachers instead, it was 20 hours, middle level and like 600$ (no travel, hotel or meals included). It was good too and more affordable for me, but I though the middle level was going to be more advanced as they asked a lot about my exprecience and even proposed me to wait to the next session in 3-4 months.
The best part was, as you said, when the teacher show you xcode tips and useful tools you won't learn from the books
What put me off about learning xCode, Obj-c and all that, was how tricky it is to distribute iOS apps.
Very good post. I have the last three editions of the BNR iOS book, and it is great. For a CF, JS, Actionscript programmer, obj-c was challenging to get your head around, but now we have a couple of well reviewed apps.
Are you going to develop an app and blog about the process?
Enjoy your posts ... have learned a lot.
@Larry: I'm going to build an app for fun, but that isn't the main reason I took the course. I can't talk a lot about it now but will be able to share more in the future.
I am with you Ray, the course was incredible. Worth every dollar I paid. Went in with zero knowledge and know I think I can start doing and learning how to do great stuff in Xcode.
I spent a LOT of time in Xcode teaching myself Objective-C a couple years ago... and I was just doing OS X development. It's definitely overwhelming, not just because Xcode is huge with tons of features and Obj-C was a new language but because of the HUGE variety of APIs provided by Apple.
I can only imagine that with iOS the same is true in terms of the depth of features and canned APIs provided by Apples frameworks and libraries. The barriers to entry are high because there's so much already there that you need to get familiar with.
This class sounds like an awesome opportunity to skip ahead and start being productive rather than slogging through it on your own like I did. You can only get aomfar on your own. :)
Sounds like a great learning experience and one that I would enjoy. I did some C programming in the past for instrument interfacing, but I assume this is different.
For me, I don't need an excuse or much of a reason to jump on a training event. It always sounds expensive, but having that skill would be amazing for a younger person these days. The need for iOS devs is fairly high from what I hear and probably would be worth $5k as an investment.
It is awesome that you get it paid for since everything I do with training comes out of my pocket.
Is Xamarin the ColdFusion of mobile development? I was where you were and feel this great big barrier of Android development hanging over my shoulders. Why not just use C# and write fewer lines of code while learning a single language and framework?
I'm honestly looking for an argument against using Xamarin, but I can't find it. Cost is an obvious answer, but we already overpay for ColdFusion, why not Xamarin?
In addition, as an added benefit for ColdFusion developers (I know that this is no longer a ColdFusion blog), we would get to learn C# which at least gets us cross training for more job opportunities with similar salary, unlike, say, Ruby or PHP which tend to pay 20% or so less.
I've read that Xamarin isn't fully cross platform, you can share a big code base, but you still have to build the UIs natively
Isn't that the same thing we argue for with ColdFusion? Use native UI instead of the UI tags stuffed into ColdFusion? Just because you have to use HTML/CSS/JS for UI, doesn't mean you should stop using ColdFusion and switch back to pure Java.
That being said, I get the impression that you do your UI with Xamarin, but you have to do it specifically per platform. It's not that you fire up XCode and do your storyboard. It's just that you have separate UI sources per platform created in C# with Xamarin.
My apologies, you might not know anything about ColdFusion. I keep forgetting that this is no longer a ColdFusion blog, so specific references to ColdFusion need qualification.
@Justin: I can't necessarily talk about Xamarin as I haven't used it - but I think I get the gist of your question. I *do* use the heck out of PhoneGap/Cordova, and you may want to know my opinion about which I think is more appropriate, better, etc.
Personally, my opinion on this hasn't changed. What I've said before when presenting on PG is that it is *a* solution for mobile apps, not *the* solution. Of course native dev is going to be more powerful! But it isn't necessarily always the best solution to get you to your end result. Web standards are something a lot more of us have exposure to, so being able to use that to build mobile apps I think is incredibly cool.
Personally, it makes me really happy that we have options. More opportunities for people to create are a good thing. :)
@Justin: Hey - I still talk about ColdFusion. :) To me, this is a "Development" blog. There are many ways to develop.
I know that you still talk about CF, it's just that your audience is much broader. Back in the day this was a ColdFusion blog, so I still have that bias when I'm here. I've been reading since this was your family blog. So, when I mention ColdFusion, I feel like I need to qualify that bias for fellow commentators.
@Justin: Ah, yeah, that makes sense. :)
In this linkedin topic you have lots of opinions about xamarin
As I haven't tested I can't give you a real opinion about it, but if you just look for multiplatform with the same code there are lots of other options, like codename one (java), qt mobile(c++)
Ray, I'm glad you were able to go to BNR and enjoyed it as much as you did. Myself and a co-worker attended their HTML5 course last year, taught by the amazing Chris Aquino. It was a great class. One of the things I loved about the BNR experience was the fact that you didn't just attend class, you also ate meals with your fellow students and the instructors, did extracurricular activities with them as well, and spent more time with them at post-class lab time until around midnight. My class had some great white board programming jam sessions and programming philosophy discussions after hours too. My point for those that haven't attended BNR is that the courses are just 9-to-5 training sessions. You're essentially spending the entire day with your fellow students and the instructors. When you break down the time you actually can spend with the instructors by hour, I think the price of the classes looks like an even better deal. BNR is now the standard that all other training courses are held to in my book.
I'm hoping that I get to go back this year for the Beginning iOS course. Everyone I've read about or talked to that's taken the course has given it rave reviews.
I will warn others that if you go to one of the courses in the summer, keep in mind you will be SOUTH of Atlanta. It will be hot. It will be humid. The class room will be comfortable, but when you walk around outside in the beautiful nature, bring light, comfortable clothes, and definitely bring insect repellant.
Yeah, I was one of those lame ones who - after dinner - went back to my room so I could decompress. :) I loved that I had the opportunity to hit up the instructors more - but I needed a break by 7PM.
Oh - and Georgia isn't hot for us Louisiana folks. ;)
Oops. Just to clarify a typo to others reading my comments, one line should read "My point for those that haven't attended BNR is that the courses are NOT just 9-to-5 training sessions."
I understand the need to decompress, Ray. I didn't take 100% full advantage of the lab hours myself, as there was a day or two where my brain was as full as it could get for the day and I needed a break.
Hi from New Zealand.
I am self teaching with BNR iOS book at the moment.
I wish I could join the boot camp as well. Sounds like 7 days there would equal to 3-6 months self study.
Thank you for the good article.
Thanks so much for posting this Raymond.
I have been wanting to get into app development for the last 2 years. I have a background in video and motion graphics. I have a basic understanding of expressions in Adobe After Effects and have dipped my toes in C#.
I'm self taught in all the software I use so I'm not too scared to tryout some new things but how bad do you think it would be for me to go to BNR? Would I just drown in the abundance of information with no chance of catching air? :-) What skill or mental perspective is key for someone like me to have going to BNR?
I would say that if you have no programming experience, it may be difficult. For example, basic ideas of how to handle conditions, looping, etc. ObjectiveC is *very* different, and if you have *no* code experience, than it may be a bit too much. You said you dipped your toes in C#, so I think you may be ok. I'd maybe suggest picking up the course book. The ObjectiveC one, not iOS, and go through a few chapters to see if it seems ok to you. You will end up with a second copy when you go, but that isn't so bad imo. If you use the link in my article I get like 2 bucks. :)
Nice review, Raymond. I'm going to that very class in October. I'm just finishing the iOS Programming book and before that their Objective-C book. I will assume they teach pretty-much straight from the books? Luckily I've remembered to take notes and jot down questions as I go so I can ask about the issues I had.
One thing I'd like to ask is that several later chapters in the iOS book seemed rushed. Kind of like, "Here's how to do all this. Now let's move on." Do they spend more time explaining the guts or reasoning behind why code does what it does, or do they leave it up to us to explore after class? I'm one of those guys that needs to know exactly what each line of code does. I hate getting things to work, then when I'm asked what the code does, I have to say, "I have no clue. I copied and pasted it."
Thanks again for the good review. I'm really looking forward to my turn at camp!
I would say they teach pretty closely to the books, but, I never felt like that they were just *reading* from the books, know what I mean?
About the end of the book - for us - the teacher made specific choices about things he felt he should cover AND he asked us as well so we could drive the course towards the end. Felt like the best option - and frankly - after the first few days it was nice to slow down a bit and make some choices about what to cover.
where did you attend at? that does not look like downtown atlanta.
I'd love to go there but just can't swing the 10 or 15k being disabled.
It was outside Atlanta - I think about an hour away.
Thanks for the post I will be taking the course in December 2015 in Monterey, CA
I hope you enjoy it as much as I did.
I would like to read a review written by someone that paid for the course out of their own pocket. Nice things to say come easily when Big Blue is footing the bill.
Well, first off, I wasn't at IBM at the time. I was very up front about the costs, and I gave my honest opinion describing why I thought it was worth that cost and in my opinion, that would apply to people paying it themselves or trying to get their employer to pay for it. If the review means nothing to you because Adobe paid for it, then I think you are missing out. I truly think BNR training is a great product.