Monday, June 11, 2012

Are you doing iPhone development? How do you learn?


I am looking for more iPhone developers who are actively posting to their blog and/or Twitter. I have been learning a lot from books but the online resources beyond Apple's developer site have been hard to find.



Please let me know if you are doing iPhone development. You can see my comment on Twitter here...



http://twitter.com/offwhitemke/statuses/1090551535



My secondary question is, where are you going to learn more about iPhone development? Have you found any good sources of video training material? Apple is charging $500 for their iPhone videos but there has to be free content out there. I found content on YouTube but it is so compressed that the text is not readable.



I have found that StackOverflow.com has been a really good place to get answers. I also find that iPhoneKicks.com (links site) has been helpful in finding content.


Source: Tips4all

30 comments:

  1. The class slides and assignments have been made available for an iPhone programming class from Stanford. I've been working through it and it's a very good start. Makes me wish I was back in college. Here's the Link.

    iCodeBlog is site with many good tutorials.

    ReplyDelete
  2. Oddly enough, I just finished reviewing Beginning iPhone Development from Apress (review here). I've found it to be a great book in getting started with development. Other than that, I've been just keeping an eye on Twitter and blogs for interesting apps that come up.

    ReplyDelete
  3. I also am watching the iPhone Development Class from Stanford on Itunes U (http://itunes.stanford.edu/) Class materials here: (http://www.stanford.edu/class/cs193p/cgi-bin/index.php)

    Other than that, I have been watching the screencasts by Pragmatic Programmers (http://www.pragprog.com/). They have content on using Xcode, learning Objective C, and iPhone development specifically. They're cheap, and content packed.

    Pragmatic Programmers also has a book on iPhone SDK Development. still in beta, but the PDF is downloadable now, and they provide updates as they are available.

    Of course, now that I have read this set of answers, I have a whole new set of places to look.

    ReplyDelete
  4. The best way I have found to learn is to take a project and start building.

    Also, learn to use the Research Assistant in Xcode. It is a great tool for getting quick information on a Cocoa class.

    Apple's source sample code is good too, although there are often inconsistencies and in some cases I have felt the author of a given demo app was showing off rather than trying to clearly illuminate an idea.

    ReplyDelete
  5. Follow pix0r's advice and buy Hillegass book.
    Download Apple's Guide
    Apple Dev forums -- better than most forums because Apple replies (sometimes)
    Download all of Apple's samples. When you have a question about how to do something, look for it there.
    Once you get an SDK login ($99), there are free Getting Started videos
    right click, "jump to definition". Apple SDK headers are well documented. If you have a question about something, look at the definition of a relevant class and see what Apple's developers wrote about it.
    peepcode and pragprog screen casts (as others have mentioned)
    Here. You're right, stackoverflow is one of the best resources.


    I've begun keeping to the above list and you'll notice stackoverflow is last. There are a lot of bad examples on forums and blogs. If you find something on a forum or blog and you don't fully understand what it does, it's not bad idea to post it on stackoverflow and/or iphone developer forums to find out.

    I'm going to be blunt about books. All the books out there now on iPhone SDK have shallow examples and will be deprecated as of iphone 3.0 release. They aren't bad for learning but there will be better books this fall and current books cover little more than what is already in Apple's programming guide.

    Last, remember the iPhone is a memory constrained device where network and local storage access is slow. Parts of your application can be unloaded at any time, your application is responsible for maintaining it's memory footprint (not the user), and an event (phone call, memory, etc.) may require the app to respond accordingly and quickly.

    ReplyDelete
  6. Here is what I did (although I am from a programming background), order important.


    Intel based Mac
    Join developer program ( this could be the last step, but I wanted something to keep my motivation high :) )
    Read first 6 chapters of Programming in Objective-C 2.0
    started watching the Stanford iPhone course (available on iTunes)
    Started reading the grape-fruit book (while referring to 3 for Objective-C questions)
    Review tutorials/projects from appsmuck
    Figure out how to use Apple documentation as reference
    Subscribe to iPhone blogs / podcasts like Mobile Orchard / iPhone developer
    Twitter accounts (there are several
    good ones)
    Add iPhone, Cocoa, Xcode, and Objective-C tags to your Stack Overflow account


    Update. I was just reading this from prag programmers. It seems like a high level overview that answers your question.

    ReplyDelete
  7. I prefer to learn by aggregating information from several sources:


    Books - Almost always the best way to get a complete beginner's overview of a language/framework/whatever. The only drawback with books is they USUALLY tend to stop at an intermediate level, and do not provide the intermediate to advanced gap (even when they say Advanced, it's usually not). Also, another drawback is that for the book to be out, the technology has been around for a while, so newer technologies rarely have books out (and if they do, it's usually just a single book by the author of the framework or someone on the core team). I try to start here if possible.
    Free/cheap courses - Sometimes there are free crash courses (such as Apple did with the iPhone SDK Dev Days in order to inspire people to build on their platform). Often you can find a tutoring/learning center offering a discount course as a promotional deal. Also, local community colleges are great places to get introduced to something on the cheap. Stanford University has a free iPhone course on iTunes U (as well as many other universities who have made many of their courses available for free). It's not necessarily the same as being there (since you can't interact with the other students, and you don't necessarily have all the handouts, or professor time), but it's a great resource for free!
    Practicing with a small project - Hands down one of the best ways to learn is to do it. You will feel like you were dropped in the middle of the Amazon Rainforest without any compass or direction, but eventually you start to see the moss on the trees and start heading the right way. You will learn most quickly this way, although, you can also learn a lot of terrible habits if you only learn this way. You should always combine this effort with the other ways of learning!
    Online Forums and Mailing Lists - 98% of the time you are not running into problems that others haven't found. Thankfully, you're not as unique as you feel. Forums and mailing lists are great places to post a problem, and get some advice/input back. Also, just browsing other people's problems can help you pre-emptively squash some future problems (or at least give you a mental notation on where to go back if you run into something). It's great to see what people are up to, what they are working on, what problems they have, and how they solve it.
    Stack Overflow - As you already know, part-forum and part-contest, Stack Overflow offers a unique way to help and be helped with programming issues. I felt this deserves its own entry separate from #4 because it's really not the same. There is a lot of high quality content here, and this should definitely be in your arsenal when learning.
    Documentation - Almost a last choice in my mind, the documentation is often a great resource to find out specific details about how to implement. Rarely does documentation give you architecture/structure advice for your particular project, but it does give you a reference for the language, framework, or technology.
    IRC - Depending on the language and community, this is hit or miss. Some IRC channels have people who welcome your problem (even when it's not unique, because after all, most problems are common even if you think it's not) and some channels will cut your head off if you ask something that isn't at the Advanced caliber. Best advice: sit around and idly listen for a week or two to get an understanding of the "social rules" of the channel before you shoot out a question.


    I hope this helps!

    ReplyDelete
  8. I know some of the Apple information is dry reading, but it's a very good idea to force yourself to read through all their documentation. And surely don't forget to download all of their sample applications, unpack them, open each project in Xcode and poke around in their code. Some of their examples seem to have been started before Interface Builder existed for the iPhone. But that's actually a plus; it'll be good if you know and understand how to code an application by hand without the use of Interface Builder.

    The Apple Developer iPhone forums are getting better, too.

    ReplyDelete
  9. I haven't found online resources too useful, with the exception of open source applications (such as WordPress) and Stack Overflow.

    Most of my information on the iPhone comes from the Pragmatic Programmers iPhone book, and Stack Overflow.

    Aside from that, most generic Cocoa and Objective-C resources are useful (again thinking of books here).

    ReplyDelete
  10. Start with the "Hillegass book": Cocoa Programming for Mac OS X. Once you're familiar with Objective-C and Cocoa basics (probably halfway through the book), switch over to Beginning iPhone Development by Dave Mark & Jeff Lamarche. Then just poke around blogs, tutorial sites, and Stack Overflow for the bits and pieces you may need to fill in the gaps.

    Give yourself some time - seems like learning Objective-C took me almost as long as when I first learned C. But then, I haven't had to write C in 10+ years so a lot of it was re-learning the same stuff.

    ReplyDelete
  11. Beginning iPhone SDK Development by Dave Mark and Jeff LaMarche is excellent. After that, just stick to Apple's docs and the sample code. Oh, and read the archives on this site. A lot of questions that I had had already been answered.

    ReplyDelete
  12. There are some good blogs out there dedicated to iPhone development. Here are a few which I referenced to learn Objective-C and iPhone development.


    http://the-lazy-programmer.com/blog/files/Objective-C%20cheat%20sheet.pdf (good for learning Objective-C)
    http://www.iphonesdkarticles.com/ (Some really helpful examples are available here)
    http://www.iphonedevsdk.com/forum/ (There's a tutorial section here where people have put in some useful examples)

    ReplyDelete
  13. I have started the blog Easy iPhone Development. I hope it proves to be a simple and easy to follow iPhone programming blog. I will try to update regularly.

    ReplyDelete
  14. Just to suggest a blog for the reference (after going through the initial learning phase with Stanford video and book) :

    Cocoa with Love
    http://cocoawithlove.com/

    ReplyDelete
  15. I've recently discovered Stack Overflow as well, and the members here are very nice and very helpful. I also picked up quite a few books that I used to help myself learn Objective-C:


    Beginning iPhone Development by Dave Mark and Jeff LaMarche (although Beginning iPhone Development 3 is more up to date)
    Programming in Objective-C 2.0 by Stephan Kochan
    iPhone Game Projects by PJ Cabrera (since I'm developing games)
    Learn Objective-C on the Mac by Mark Dalrymple and Scott Knaster


    I've learned basic Objective-C using just these books and some online tutorials. These books suggest you should know basic C before you read them, but I didn't know a single line of C and I picked up the language pretty fast.

    ReplyDelete
  16. Are you looking for basic, intermediate, advanced, etc. material?

    If you're looking for basic information, I'm working through Beginning iPhone Development right now and it's really helpful. I've never done Objective-C before, so it's really helpful in answering my stupid questions I have about Objective-C and programming in a Mac environment which I've also never done before. If you're a beginner, I would check it out.

    ReplyDelete
  17. My advice is learn as you go. Start now working on a product that will end in something that will actually ship. As you work your way through your project, I suggest that you always start with the Apple documentation. Chances are they will always lead you in the right direction. Other information is A) either sparse and fragmented, or B) will limit what you learn. Take it from someone who shipped a product, don't waste time learning! Learn by doing. You will never know everything, so if you wait, it you will never start.

    ReplyDelete
  18. Stanford's CS193p iPhone Application Programming course is on iTunes U (free) stanford.edu/class/cs193p/ the video lectures/materials are extremely good (I believe recorded by Apple).

    ReplyDelete
  19. Tim Haines (developer of BurnBall and Kana) started a spreadsheet listing lots of iPhone developers who are on Twitter. Other people have written scripts to auto-follow them all. Here's one. I wouldn't necessarily recommend following every one of them (there are a lot!) but I've learned a lot by following a few of them.

    ReplyDelete
  20. I learned from the book Beginning iPhone Development as well as many hours of searching and practice (I wrote 25 apps in a month, which you can find here: http://appeveryday.wordpress.com/ There's a lot of sample code there)

    ReplyDelete
  21. Many people mentioned Beginning iPhone Development by Jeff Lamarche and David Mark.

    Jeff Lamarche has an excellent blog at http://iphonedevelopment.blogspot.com/

    There's tons of sample code if you dig around in the archives and a great series on programming with OpenGLES on the iPhone if you're into that. Apparently he's working on a book on the topic.

    ReplyDelete
  22. It really depends on your level of experience in programming and what languages you have experience in. I am making the move from a C# and Java background. For me my first step was learning Objective-C. pix0r recommend the Hillegass book which in my opinion should be in every Objective-C programmer's library.

    The classes from Stanford are good and should be followed. However, I discovered another class, geared more towards Java, called Programming Methodology, which for me has been a great resource. You can find this class from Stanford in iTunes U. As the course name states, this is more of a class on methodology and not programming mechanics. It was a great refresher for me.

    If you are new to learning Objective-C I would recommend building applications on the Mac first, to just get the feel of Objective-C. Understand how Objective-C works first then make the transition to developing for the iPhone.

    Keep it simple first and don't overwhelm yourself. There's a lot to learn.

    Good luck!

    ReplyDelete
  23. I post questions and answers on Stack Overflow. I've answered my own question more than once. I do this in lieu of putting it on my own blog.

    ReplyDelete
  24. Disclaimer, I run the site.

    iPhone Dev SDK: http://www.iphonedevsdk.com/forum/

    iPhone Dev SDK - Popular Threads: http://twitter.com/iphonedevsdk

    ReplyDelete
  25. I've found the book

    iPhone in Action: Introduction to Web and SDK Development pretty good. Its written at a good pace compared to other books that ramp up too slowly or too fast.

    Also a good objective C tutorial goes a long way. If you are coming from another language, the first thing to learn is Objective C's Message Syntax because that will help you read a lot of the iPhone code that looks cryptic at first. You can read the official doc on this here

    ReplyDelete
  26. Related: be sure to check out the "Objective-C for Rubyists" talk from peepcode:
    http://peepcode.com/products/objective-c-for-rubyists

    Fast-paced, but contains outstanding presentation and general insights for a beginner.

    ReplyDelete
  27. Well, I learned it by myself by just reading lots of documentation and demo-code Apple provides. And now I know almost everything about making applications (not games). But I'm only 14, so I have lots of holidays in which I can practise with Apples iPhone SDK.

    ReplyDelete
  28. The SDK contains a lot of sample code.
    If you keep an eye open for the obvious flaws,
    they are a very good starting point.

    Especially if you just want to know how to use API-"XYZ".

    Just be aware:
    There are serious errors and ommissions in some of the samples!

    (Take the now famous CrashLanding/SoundEngine leak as an example.)

    ReplyDelete
  29. Sample Codes:
    http://developer.apple.com/
    Books:
    Beginning iPhone 3 Development: Exploring the iPhone SDK
    Docs:
    http://developer.apple.com/
    Video:
    http://www.stanford.edu/class/cs193p/
    and most importantly:
    do some real coding ;-)

    ReplyDelete
  30. There are quite a few good YouTube tutorials. I especially like O'Reilly Media's Elisabeth Robson. I think the best way to learn is by open-source projects if you don't want to read.

    ReplyDelete