Re: How hard is it to learn Cocoa - Survey ?
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