Helping people

2010-11-06 17:03:33 UTC

There’s a recurring theme I keep seeing in questions on Stack Overflow.

I’ve said those words a few times now. I’ve said it twice at my recognizing-Cocoa-bugs presentation, which I’ve given at one CocoaHeads and at the MacTech Conference (just concluded yesterday). I’ve also said it a few other times at CocoaHeads, usually in preface to explaining something that’s both germane to the current conversation and the common source of confusion in the questions I’m then referring to. Plus, I’ve said it a couple of times in posts here.

In the concluding session of the conference, Edward Marczak, MacTech’s executive editor, cited a number of tweets related to various cool things that happened in the past few days. One of them was from me, inviting attendees to flag me down for one of my useful-Cocoa-links cards, which I’d previously offered up to audience members in my session. He told the audience how cool he thought it was that I’d thought ahead and made those cards.

The reason I’d made those cards was because I’d identified a pattern. In my answers on Stack Overflow, I often cite one or more of a few key documents:

or tell the questioner to listen to or turn on some warning or other and link to my warnings blog post as part of that.

My introductory document for Cocoa and Cocoa Touch, in its own introduction, identifies a similar genesis: Everything on that page is something I’d had to explain to multiple people on Stack Overflow, so I decided to put it all in one place for easy linking (by me) and easy reading (by new Cocoa or Cocoa Touch programmers). That document is also among the links on the card.

Each of the things I got praised for in that concluding session, and thanked for (besides Growl, which is mostly a lot of other people’s work) outside of sessions, I made because I’d identified a need by spotting a pattern.

There’s no reason you can’t do this, too. What have you done multiple times lately? Especially, what have you done or made or found for other people multiple times?

Somewhere on Eric Raymond’s site, there’s an explanation of the difference between newbies and wizards. It’s not that the wizards know all that much more than the newbies (though they often do have a stronger/deeper conceptual understanding); asked for the name of a function, say, the wizard will probably not know it exactly (unless it is very simple, such as CFRetain, or one they use very frequently, such as CFRetain).

The difference between them is that the wizard knows where to look stuff up. I sometimes refer to this as “swapping things in”, the analogy being virtual memory: I remember very little at any given moment, precisely because I know where I can get it from when I need to get it back into my mental working set.

The wizard knows how to help themself.

How can you enable people to help themselves?

Here’s that card, if you want one.

3 Responses to “Helping people”

  1. Pierre Lebeaupin Says:

    I’d add one thing: yes, do not use threads, except for real time stuff, like an audio or video playback engine (which you will very rarely do anyway, and certainly not in Cocoa). This is the last remaining use case for threads. For all the others:
    – if you have multiple windows, they should all use the main thread (I’ve never understood this piece of Win32 design)
    – if you have file operations which you’ve observed to be a bit long, or network operations, or other I/O, use asynchronous APIs
    – if you have potentially lengthy calculations (but that don’t need to be real-time), use NSOperation/GCD.

  2. Andy Lee Says:

    I sometimes use the Winnie-the-Pooh analogy, being a Bear of Very Little Brain. But I do swap things in, at least sometimes, so virtual memory is a better analogy.

    I started to write more here but it turned into a blog post:

    While writing the post I realized it was you (Peter) who had that cool way of using OmniWeb to browse the docs.

  3. Nick Fitzsimons Says:

    I couldn’t agree more. As a contractor I do a lot of technical interviews with prospective clients, and these days I’m always comfortable responding to any recondite question with “I don’t remember, but I know where to look it up.” In my experience, the best clients (read: smartest teams) are always happy with that.

    In fact, I remember one interview when I just shrugged and said “I’d have to look that up” and one of the interviewers responded “Yeah, we should ditch that question – nobody remembers stuff like that, you just Google it.” That was at Yahoo! ;-)

Leave a Reply

Do not delete the second sentence.