Hello there,
I want to start developing for iOS, I have little background experience in Java and C++, so here's my question so I have a few options to start learning objective-c.
a) Go throughout the 3 courses of Stanford (at iTunes U), first one Java, second one C++ third one iOS development (Stanford states the you must have the experience from the previous 2 to make it through iPhone development. Each one takes around 25 lecture of 1 hour plus homework.
b) Buy a book for objective-c and start from there (maybe kochans?)
The first one seems to be the right way because with a professor its just easier for me to understand than reading, it just bothers me that the 3 courses will take me probably 8-12 months and at the end I have no interest in learning deep java or c++.
So, what do you think?
I'm assuming you're new to programming --- if that's not the case, what I've written may not apply
I haven't actually looked into the Stanford courses specifically, but I'd wager that 25 hours of lecture time hardly counts as "deep" java. Probably what they're doing in that course is teaching the philosophies behind object oriented programming, and they're using Java as a language to teach in. (Java's very common for teaching programming in Computer Science degrees.)
I've just had a glance on iTunes U. Is it the "Programming methodology" course that they recommend you take first? That uses Java, and describes itself as an introductory programming course. Thing is, programming is itself a skill, which is separate from the knowledge of a language. To make iOS apps you have to learn how to program (and how to think like a programmer), as well as learn how the Objective-C language and Cocoa APIs work. The Stanford iOS course doesn't teach the former because it assumes you already know how to program: that's what the Programming Methodology course teaches.
Incidentally, when I opened a random lecture of the Programming Methodology course to see what it was like, the first thing I came upon was about positioning a triangle to point at a certain position on screen. I work as an iOS developer, and I'm actually doing the exact same thing at the moment (I'm writing a popup bubble thing like you get in Maps, and the triangle is the arrow at the bottom of the bubble). The stuff in that course might be more generalisable than you think
🙂
There's actually an advantage to learning how to program in a different language to the one you'll end up using. Firstly, picking up a new language is a lot quicker than picking up the basic concepts of programming, and secondly knowing more than one language means you don't get trapped into assuming that the way Cocoa does something is the only way to do it.
So after all that, how to make your decision about what to do? You've already suggested that you learn better from lectures vs out of a book. Assuming your goal is to become a programmer who can write iOS apps, I'd suggest you have a crack at the Programming Methodology course: get yourself a copy of Eclipse and start out with a bit of Java. If you hate it you can always give up and go down a different route.
I see so many threads on forums by people who want to write the next great iOS app but don't want to learn the basic techniques of programming --- usually they're along the lines of "I found this sample code on topic X, this sample code on topic Y, but I can't make them work together". Don't be that guy: whatever route you go for, make sure you're learning how to program rather than just learning a bunch of pre-prepared tasks where you don't actually understand what's going on.
Sorry for the epicness of this post!