How to write like Raymond: What I tell you three times is true

Another installment in the extremely sporadic series on how to write like Raymond.

On occasion, I'll find myself engaged in a mail thread with a customer who refuses to believe what they're being told and is under the impression that rephrasing the question will get a different answer.

"My customer wants to control the name and appearance of the XYZ icon in the DEF dialog."

— There is no public interface for manipulating that icon.

"Can I change the icon's appearance?"

— There is no public interface for manipulating that icon.

At this point, I say to myself, "Two." And there's a nonzero chance that I will be rewarded with a third question:

"What about in C++?"

What I tell you three times is true. There is no public interface for manipulating that icon.

Comments (24)
  1. ti says:

    Well, no public interface, but there’s always hacks. Every graphic element can be changed or obfuscated.

  2. rkpatrick says:

    Today’s hack is tomorrow’s bug.

  3. bigfoot says:

    Today’s bug is tomorrow’s blog.

  4. Erzengel says:

    read "There is no public interface for manipulating that icon." as "go thunking through the private files so that your program will make a compatibility nightmare for me and the rest of the shell team next time we upgrade windows." Because you know they will.

  5. Shalmaneser says:

    Christ, what an imagination I’ve got.

  6. Matt Green says:

    Of all the days to make this post.

    "I’m telling you, I do NOT know the interface!"

    And then the rooster crowed, and the customer wept bitterly.

  7. Dave says:

    Anyone who trusts the first answer from "professionals" will end up poor(lawyers,investment  advisors), lost data (IT tech) or dead (doctors).

  8. Cooney says:

    This reminds me of a guy who was trying to buy my car for well under what I was selling it for – we went for 5 minutes with him reasking the same question until I told him that he wasn’t getting the car even if he did offer what I wanted (that happened about 3 minutes in). Basically, he thought that he was negotiating or something.

  9. Nar says:

    I think it’s a mistake to say there’s no public interface for that. Now they suspect there’s a private one, and you have two problems.

  10. slapout says:

    I used to work in retail and people were the same way. I’d have to rephrase the answer several times before they’d accept it.

  11. Michael G says:

    You do realize that this "rephrase and re-ask" is common because it works.  All the time.

    Sure, maybe it doesn’t work on *you*, being the thoroughly thorough fellow you are, but surely you’ve run across this in other people.  "Oh, I assumed that you understood I meant no interface in C#.  Of course you can do it in C++."  It’s hard to fault people for using the question-re-asking technique, given all the positive reinforcement they’ve gotten throughout their lives.

  12. GregM says:

    I just went through this today, except that I had to say the same thing *5* times before the person finally went away.  I’m not sure if he finally believed me, or just gave up.

  13. As a parent of two small children — I’m used to repeating everything three times.

    Not sure if I’m saying your clients are children — or my kids will grow up to be poor clients! (^_^)

  14. Jimmy says:


    Now seriously, how can I change the icon’s appearance? I know you know.

  15. MadQ1 says:

    Heh, I just noticed this… so this is why a shell extension registered as a ContextMenuHandler that does not actually implement IContextMenu (don’t ask – you don’t want to know) gets queried for its IContextMenu interface three times. The answer was E_NOINTERFACE each time.

    P.S. And it’s C++, so shaddap!

  16. Anonymous says:

    I suspect they’ve got a reason for asking again each time, but they’re hiding it because they they’ve misunderstood "public interface" as "user interface".  They think Raymond’s saying there’s no dialog, so the immediate response is to ask "well can I do the same as", and finally specifically ask whether there’s a programmatic way.

    This is why, if asked the same question twice, it’s always a good idea to reword.  Otherwise you’re saying "I’m right, but you don’t know why yet".

  17. Anonymous says:

    … that is, if you’re not trying to write like Raymond…

  18. brian says:

    When someone does not understand your answer, I’m sure repeating it two or three times with the same wording  will make them understand.

  19. Pete says:

    I suspect that part of the problem is that when you give a terse answer, even though it is complete, it doesn’t fit the reader’s expectation of what a complete answer looks like. You must provide at least a paragraph, even if it’s full of made-up crap. For example:

    To my knowledge, there is no public interface for manipulating that icon. To be certain, I asked the Senior Principal Engineering Director of Icon Manipulation Interfaces, and he confirmed my knowledge, and added that the use of any private interfaces you may discover will get you a stint in the pen. And here is a list of other icon manipulation interfaces, none of which does what you want, but together convince you that I actually know what I am talking about, because the name Raymond Chen evidently makes no impression on you, because you aren’t one of the top 10% who do such things as read blogs of Microsoft engineers.

    Anyway, that’s the way it worked when I did developer support for a living. I didn’t get much of this re-asking nonsense.

  20. Gwyn says:

    Today’s hack is tomorrow’s public interface

  21. Jon Stevens says:

    Looks like the customer was right. Raymond, you didn’t answer his question. "Can I change the icon’s appearance?" requires a yes or no answer. You’ve told him one way he *can’t* do it (via a public interface). It’s no wonder he is asking again.

  22. brian says:

    When someone rewords a question, it is because they want your answer reworded.

  23. arun.philip says:

    The first three comments are priceless!

  24. Name required says:

    Today’s blog is tomorrow’s nitpicker food.

Comments are closed.