• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: How hard is it to learn Cocoa - Survey ?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How hard is it to learn Cocoa - Survey ?


  • Subject: Re: How hard is it to learn Cocoa - Survey ?
  • From: Fritz Anderson <email@hidden>
  • Date: Tue, 27 May 2008 12:12:10 -0500

On 25 May 2008, at 21:18, Erik Buck wrote:

So this is a survey:
For those who consider themselves intermediate to advanced Cocoa programmers, how long was the journey from newbie to competent and from competent to advanced ? What percentage of your time did you dedicate over how many months ?

## History

Programming minicomputers in the mid-'70s, my first personal computer 1977, read The Elements of Programming Style in 1976(?), which was very influential to me. I, too, did a lot of 8080, 6502, Z80, 8088, BAL, and 680x0 assembly. I stumbled on event loops in 1982. I'd become proficient in the Mac Toolbox in 1984, and really took to heart the concept of a manager for a data type -- exhaustively providing operators for an opaque pointer that was the first parameter to the function.

My first introduction to O-O programming was reading about Smalltalk-80 in the early-'80s. (Using it? Hah! Not on affordable hardware.) In 1987, when I was part of a team working on an O-O relational database, I got the 30-minute briefing on Objective-C at Stepstone from Brad Cox. Teaching myself C+-, and then C++ (the MUCH smaller language of 1989, where reading the cplus preprocessor's output helped a ton), took only a few months. I had exposure to MacApp, but not enough to be very good at it. Proficient at the THINK Class Library (wrote an SGML hypertext renderer in 1993) and PowerPlant. Java/AWT in the late '90s.

This is not to brag. It's to show I had a long ramp-up time on concepts similar to Cocoa's before I came to it in Mac OS X 10.0. My learning curve is probably not common.

## Cocoa

Using an actual Objective-C compiler was trivial for me. A day for 90% competence. The full implications of duck typing took a month or so.

My style is to read the manuals exhaustively before I take up coding. I had to print them out, and read them two or three times. The historical oddities hurt. The conceptual docs, mostly abbreviated in the class references, did not lay out the core tasks clearly enough for me. There was very little to bridge the gap between CurrencyConverter and nontrivial programs. (This is 2000; eight years have essentially solved this problem.)

At 60% effort, I'd say I got beyond trivial applications within 4 weeks of starting with the manuals. Document-based applications were intimidating enough to take another 4. By then, I understood every question and answer on this list (2001). (Competent) In another 3 months, I was answering questions, mostly correctly. (High-competent) Advanced? At 10% effort, a year.

There are still some basics I don't have complete command of -- a recent answer on this list involving NSDocumentController was a revelation to me.

With today's documentation, I'd think the time to work up to NSDocument could be about halved.

With the growth of the Cocoa frameworks, the time till you could usefully answer questions may have gone over a year.

Once I had the concepts and patterns down, I was usefully competent on Core Data within 3 weeks of release (50% effort). I find the documentation to be good enough that if I need it, I can use a new technology within a week, and get back to competence at a forgotten one within an hour (100%).

Having the basic skills, and drilling hard on the concepts of a new part of the framework, are paramount. Skim the class reference _without_ an application in mind when you're about halfway through the concepts; read the reference carefully after the concepts; and only then read the reference for your application. It took me a week to be confident of the division of labor in the text system. (Competent) I wrote an NSLayoutManager (including a custom renderer for some characters) for monospacing in a terminal emulator, from a standing start, in a couple of months. (Advanced on the subject in maybe a month, the rest in a design/debug/refactor loop.)

I don't know if this is helpful, or even responsive, but that's my story.

	— F

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >How hard is it to learn Cocoa - Survey ? (From: Erik Buck <email@hidden>)
 >Re: How hard is it to learn Cocoa - Survey ? (From: Paul Sargent <email@hidden>)

  • Prev by Date: Re: Date compiled?
  • Next by Date: Re: running an external app
  • Previous by thread: Re: How hard is it to learn Cocoa - Survey ?
  • Next by thread: Re: How hard is it to learn Cocoa - Survey ?
  • Index(es):
    • Date
    • Thread