Design Element
Comment on "What Do People Find Challenging About Cocoa?"
by Ulai Beekam — May 17
Scott, personally I think you are asking a relatively uninteresting question. No offense intended, of course—it is a perfectly valid question, especially for those who want to teach Cocoa. But let me explain my viewpoint below.

I already knew some C, C++, Java, PHP, HTML when I started learning Cocoa about a year ago. I had studied those other languages only for the sake of fooling around, and had never worked on any real projects (save for a website I did for someone). So again, it had only been playing around doing random, but mostly useless, things out of interest since I was like 13 years old.

When I came to Cocoa a year ago it was different. I had a real Mac application in mind that I wanted to do. That was a different experience than before. I therefore, picked up a copy of Hillegass' book, read the first 20 chapters, then read some Apple docs to more solidify my knowledge.

At this point I can answer your (uninteresting but valid nonetheless) question: The biggest hurdles to learning Cocoa, I found, were indeed a mixture of this normal stuff everybody is mentioning around here, like "different Obj-C syntax", "seems like magic", "bindings", "Nib files", "Xcode", etc. etc. But why does this question even need to be asked and answered at all?

First of all, when you learn something new, you come across new things—that's just the way it is. Second, if you read about it often enough (I had to read some chapters in Hillegass many times over to understand them), you will get it in the end. So is it just me or am I missing something? Because to me it seems a bit trivial that people will have troubles with certain things, but are bound to get them in the end. I'm sure you even guessed many of the replies you received, before even receiving them, Scott.


The biggest hurdle to overcome is to actually finish and release your first application. The very last challenge in the end of Hillegass' book, "Write a Cocoa application and get someone (not yourself) to use it", it by far the hardest exercise in the book. And this is after supposedly having learnt Cocoa!

So the question you should rather be asking is: After learning the basics of Cocoa—which you will do after a few months by just reading and practicing the material often enough—what are/were your biggest stumbling blocks for working on your first real application?

This question can lead to much more interesting answers, I think. So can you do another Twitter post asking that question instead, and write a similar blog post about the answers you got? :)

Anyway, I conclude by giving six answers/thoughts to this question for myself:

1) Finding that Apple's docs have their limitations, and that you have to constantly Google/Cocoabuilder/Cocoadev things up to figure out how to do things.

2) Get around occasional bugs (believe it or not, they are there) you come across in Cocoa.

3) Spending a month writing something that you ended up not using at all. Even if you ended up learning a lot, it still was an obstacle in getting the app released on time :)

4) Finding out that you forgot what you read months ago and had to read it again. This time, though, you know where to look. Also you more solidify your knowledge because you are instantly using what you are reading.

5) Not knowing what makes Cocoa so great. Since one has not written any real applications in any other framework, one has nothing to compare oneself to, and cannot really understand why everybody is saying Cocoa is so great. One is just using it because one wants to write some Mac app :) (In fact, can someone answer this? Is Cocoa really that great compared to say .NET in Windows?)

6) A general feeling that one is taking too long time to code a seemingly simple app :( In the sense that if I showed a relative the current state of my app and told him how long it has taken me, he wouldn't be too impressed. (Any words of reassurance would be appreciated here.)
Back to "What Do People Find Challenging About Cocoa?"
Design Element

Copyright © Scott Stevenson 2004-2015