As a new Cocoa developer I've spent a fair amount of time ferreting around for useful books, web sites, podcasts and blogs, forums and discussion lists and looking into source code repositories. This article will highlight some of the best that I have found to date and will be the first post in my 'Resources' category. There are a several more books that I have and many more sites and blogs that I visit but these are some of the key ones so they get mentioned first.
I had actually bought Stephen's book a few years ago and it had mainly been left on my bookshelf gathering dust. However when I sat down and worked through it I found it to be very informative and, possibly more importantly to a newcomer, very well written. A new edition is due out towards the end of the year which will cover Objective-C 2.0 but, to be honest, I think that the additions to the language can be picked up fairly quickly and easily so it's not essential to wait for it to be published. If you are new to Objective-C and have little or no experience of C then this is a great book to get.
Aaron's book however does benefit from the update to the third edition. OS X and Apple's development tools have evolved much more quickly than Objective-C has so using the latest edition is highly recommended. The first edition was written for Puma and the significant changes in Jaguar and Panther necessitated the publication of the second edition. However, since that was published we've had Tiger and now Leopard so, even if you have an earlier edition lying around I would recommend picking up the third edition. This is especially important if you are a new developer because during those initial stages of writing your first few test applications you are heavily reliant on following step-by-step instructions and if those instructions don't match what you are doing yourself then it all gets very confusing and discouraging.
Cocoa Programming for OS X is generally perceived as being the Cocoa book to read and this is something I would echo. Aaron's writing style is wonderful and the book is very readable and understandable. It is a fantastic introduction to a lot of topics and gives you just enough confidence to go off and do further research yourself.
Web Sites, Podcasts and Blogs
First a disclaimer ... the following site and blogs are by no means an exhaustive list of even just the core ones I visit and read. If I listed them all it would take up too much room so this is just a very cut-down list of the ones I would recommend for a new Cocoa developer. Having said that, in no particular order...
- CocoaDev is a wiki and is a fantastic place to find snippets of code and tricks and tips.
- Cocoa Dev Central contains a lot of great content and several step-by-step tutorials. Scott Stevenson does a fantastic job with the site and it is well worth a visit and don't forget to have a rummage in the archives. I'll add another of Scott's sites, Theocacao, to this entry too since the two sites are very closely related.
- The Cocoa Literature List is a wonderful index of articles about Cocoa. Starting here can save you from a lot of hunting around numerous sites since the hard part has been done for you.
- The Cocoa for Scientists articles are really excellent and the first thirteen are certainly generic enough not to be restricted to Cocoa developing scientists.
- The comp.lang.objective-c news group is another useful resource but if you don't want to brave newsgroups then the FAQ for the group is a good read.
- I also found Masters of the Void to be an incredibly useful introductory guide to C. In fact it may well be worth reading through the tutorial before starting Stephen Kochan's book because it explains a lot of the basics such as memory really well.
Suggesting podcasts is much easier because some of the best ones are available via The Mac Developer Network. Late Night Cocoa is the one which is probably of most interest to Cocoa developers but Mac Software Business is very inspirational and informative if you want to make a living as a self-employed Cocoa developer. The Mac Developer Network site also recently started to sell video tutorials which are excellent and I highly recommend.
Forums and Discussion Lists
I've deliberately restricted myself to a handful of these, mainly because I know from past experience that it is very easy to reach a saturation point where it becomes impossible to monitor all of the forums you've joined. I also decided to restrict myself to discussion lists and forums which allow posting via email because I find it much easier to skim through emails than I do to plough through pages in forums.
Apple themselves run an excellent set of discussion lists but there are loads of them so I started with one, the Cocoa-dev list. This is very active and the vast majority of posters are friendly and helpful although I would suggest reading the list guidelines and definitely don't mention the iPhone SDK or a list moderator will slap your wrists. It is also worth knowing that CocoaBuilder.com is a fantastic, searchable web-archive of the messages in the list where discussions are threaded properly.
I've also become a member of the Macintosh Software Business discussion group and the Mac GUI Development group. Neither are massively high traffic but they are both relatively small groups of friendly, helpful people.
Finally, I'd recommend joining a local CocoaHeads group or setting one up if there currently isn't one near you. These are groups of Mac developers who meet up regularly do discuss development issues and having other local Mac developers to talk to can be a fantastic help when you're frustrated with a problem of need some advice.
Source Code Management
Source code management is vital for any serious development projects and Xcode 3 offers some reasonably good integration for Subversion. However, there are a few issues with Subversion and Apple's bundles (essentially a folder of files which looks and behaves like a single file) so I looked around and am currently using Bazaar. Rather than writing a lot about this I would suggest reading Martin Pilkington's blog post about it.
Initially I had this at the top of the list but since it took a little while for it to become useful for me I've put it last on my list but it is by no means least. Apple provide extensive documentation and at first it can seem that there is too much documentation. There are user interface guidelines, Objective-C language guides, Xcode tools guides, Interface Builder guides, all of the API and framework documents and much, much more. However, as you start to become more comfortable with the development tools and Objective-C you will find them invaluable. Frequently there are two complimentary sets of documents for a particular topic, one which discusses the conceptual issues and one which details the framework itself. For example, the Dates and Times Programming Topics for Cocoa is a fairly descriptive guide to dates, calendars and time zones which refers to specific classes such as NSDate and NSCalendar and there is separate documentation for these classes which actually defines the methods, constants, etc. in detail.
I can't really put my finger on when it happened for me but you will slowly find yourself searching through Apple's own documentation and using it more and more until it really does become your first port of call for information. The structure and layout of the documentation will click and what may initially seem to be an unfriendly, overwhelmingly complex mountain of information soon becomes a good friend.