The frustration of people who have already decided on the solution and won’t let you derail them with your annoying questions


I illustrate this frustration with an actual mail thread (suitably redacted) which I was an observer to. It's a long thread because that's part of the frustration.

From: Adam

I am looking for some expert advice here on finding a better solution to our performance problem with Product P. Here are the details.

[Here follow the details on a problem and three proposed solutions. Feature F is mentioned briefly and rejected because "it will be a problem because of Condition C."]

From: Bob

This approach is prone to a lot of trouble.

Please be more specific about what was wrong with Feature F.

From: Adam

We were concerned about Scenario S when we are in Condition C.

From: Bob

But Condition C is exactly why Feature F was developed.

From: Charles

How big is Scenario S? I'm part of a team that is even worse than Condition C, and we haven't noticed any problems. But maybe your Scenario S is a lot bigger than ours.

From: David

Stepping back a bit and emphasizing Charles's point: You rejected Feature F because "it will be a problem." Have you actually tried it? Set up a testbed with Condition C, turn on Feature F, and try it out. Do you actually see problems you predict? As with any performance problem, the first thing you have to do is measure. Information like "A job of size X takes M minutes to run to completion" gives us something to work from.

From: Adam

Actually, I know what Charles's situation is, and our Condition C is worse than Charles's. And we found that when we ran Scenario S on a default configuration, it was really painful.

From: Edward

Can you be more specific about what the pain was?

From: Adam

Please focus on the topic we originally asked and let the experts help us solve our performance problem.

From: Edward

I am the Product P expert who designed and implemented Feature F. I would like to help you. The measurement suggested by David would help everyone understand your situation. Feature F was specifically designed to improve performance in Condition C. If you assume that it will not work without even trying it, then the first thing you need to do is turn it on and try it and measure it.

By the way, your second proposed solution is missing some important steps. If you want to continue along that plan, then you should refer to the Scenario Z section of this whitepaper I wrote (part of the Product P Resource Kit) and use that as a template.

From: Adam

Thanks for your great whitepaper. It's really useful! I will test it in our lab next week.

That was the last we heard from Adam.

It's sort of the whitepaper version of somebody who is just looking for the magic thing to type without trying to understand why it works or what its advantages, disadvantages, and limitations are.

My guess is that Adam is just going to plunge ahead with his proposed solution #2 even though it's probably not the best solution. He already decided what he was going to do and just wanted somebody to sign off on his solution. He wasn't interested in learning about other options, as demonstrated by his blind rejection of Feature F (which was in fact specifically designed to address his situation).

It was also strange hearing Adam demand that we avoid annoying tangents (like trying to understand what exactly the problem is) and let the experts solve his problem. Even though everybody involved in the discussion knew far more about Product P than he does, and that he singled out the most qualified expert for his scolding.

Comments (22)
  1. Alexandre Grigoriev says:

    I sad as it is, I met such developers. You have to be very careful to navigate around them. They can get angry when you point to any deficiency of their designs. Sometimes you see that it just won't work, but if you tell that, they will stonewall you. They are very eager to report a REAL problem in your code, but not so eager to hear suspicions about a problem in their code.

  2. kog999 says:

    to paraphrase so you dont have to read so much.

    I need help

    We know all about this stuff all you gotta do is this

    I dont think that will work

    did you try it?

    no

    try it

    i dont want to you guys are noobs i'm gonna do my own thing.

    Their must be something else going on here. I'm guessing Adam was pretty familiar with the technology in the second proposal, though not familiar enough to get it to work on his own. and was totally unfamilar with Feature F so he dismissed it as being to hard to learn and went with what he knew even though its not the best way.

  3. Maurits says:

    As with any performance problem, the first thing you have to do is measure

    It's at least 30% of the rest of the things you have to do.

  4. mikeb says:

    > this Dilbert cartoon <<

    There's something very wrong with that Dilbert…  The PHB seems to have a clue. This must be an "alternate-universe" sub-plot, but why doesn't he have a goatee like an alt-universe PHB should have by the laws of nature?

  5. Toddsa says:

    It is a hard lesson to learn as a developer and hard to take criticism, especially if he has already wrote the code for the other scenario and is about to exit the coding milestone for whice it was due.

  6. CGomez says:

    @kog999:

    Why does there have to be something else going on?  The old wives tales developers believe in concerning features, products, history, and development are legendary.   I hear all the time about how "oh you can't do this because of performance."

    One of the inevitable posts on any MSFT blog announcing a new product or system is: "What about performance?"  The question might as well be: "I don't really want to learn anything, can you just tell me it doesn't work so I can tell my boss and I can go back to doing nothing?"

  7. Leo Davidson says:

    The only thing worse is someone who doesn't want to try what you suggest but pretends that he has tried it to get you to stop asking, leaving you extremely confused about the impossible results/situation he claims to be seeing.

    You have to trick him into trying it "again" (i.e. for the first time) a bit later, at which point the problem gets resolved.

  8. kog999 says:

    "Why does there have to be something else going on?  The old wives tales developers believe in concerning features, products, history, and development are legendary.   I hear all the time about how "oh you can't do this because of performance."

    Because his problem to begin with was poor performance. He was asking for a way to fix his already existing performance problem and the experts said use Feature F it's designed to give you better performance in just your situation. Perhaps he was under the impression the Feature F gave bad performance and its possible that under circumstances other than his that could be true, Or maybe he thought the experts misunderstood his circumstances and Feature F actually would make performance even worse in which case he should have explained what he thought they got wrong. But if you going to ask this group of experts for their opinion at the very least he should have tried it to see what happened. If for nothing else but to say “see I told you this wouldn’t work here is how it didn’t work in my situation” and move on with solving his problem though other means. The fact that he went to the trouble of asking a question and the rejecting the answer out of hand without providing a good reason for rejecting it makes me think there is something else going on.

  9. James Schend says:

    We have a developer with the opposite problem. Everything turns into XML… every problem's solution somehow involves XML.

    Notably, once he proposed that we replace a URL query string with a somehow compressed XML string. I asked how he was going to fit the XML in the HTML character limitations and URL length limitations, and he just said we'd have to "compact it somehow."

  10. Alexandre Grigoriev says:

    One sad example of misguided optimization seems to be "multithreaded PDB write" in a recent MS LINK, proudly described in the developer blog. I would never have thought that writing even 100 MB file would take more CPU and wall time than linking the damn EXE/SYS thing. Actually, there is a way to make it slow. It is: make the file compressed, and write it in small increments, smaller than the compression unit (64 KB or so), or do random writes in it. This will cause many wasteful uncompression/compression cycles.

    Strike 1: LINK creates PDB files compressed. I haven't checked what IO patterns it's using, but suspect it's far from optimal for a compressed file. If you insist on using a compressed file, just create the whole thing in memory and shoot it to WriteFile.

  11. Craig Hinrichs says:

    That was therapeutic. I have been in situations/conversations like that so many times.

  12. SRS says:

    Where I work, every problem's solution has to involve a well known and expensive Java App Server.

    Unfortunately it soon becomes every solution's problem.

  13. JamesNT says:

    This so reminds me of so many conversations I have had with clients.  Usually, you can boil down the whole conversation, which may encompass over a dozen emails going to and fro, into one simple thing:  I don't care what causes the problem, especially if it's me.  Just fix it without spending any money or bothering me!

    JamesNT

  14. Roman Zenka says:

    Adam: How do I get card X work under Windows?

    Bob: Buy card Z.

    Charles: Switch to Linux.

    Adam knows much more about his own problem than the others, and might simply not be communicating every single reason why he does not want to use a solution you are forcing upon him. Mental laziness can be just one of them.

  15. steven says:

    Is there ever a situation where this Dilbert cartoon *isn't* appropriate?

    http://www.dilbert.com/2009-07-25

    The problem is that they never let a lack of knowledge stand in the way of ingenuity and bias.

  16. Ben says:

    @Roman: Your hypothetical Bob and Charles are indeed annoying, but that doesn't line up with what Raymond said. It's more like:

    Adam: I am currently using windows, and I want to use my card X. The windows drivers D won't work for me. My options are buying card Z to replace it, switching to linux, or writing my own driver in x86 assembly. Can you guys help me choose a solution?

    Bob: Why won't D work?

    Adam: I am concerned about the interactions of the D drivers with card X.

    Bob: Those drivers are for card X.

    Charles: I have card X too, and D worked on my machine. It's possible that there is something funky with your setup.

    Adam: The D drivers are not an option.

    and so on…. (Hypotheticals are fun, aren't they?)

  17. EricLippert says:

    I am reminded of this Coding Horror posting: http://www.codinghorror.com/…/are-you-an-expert.html

    As Jeff notes, *the experts are usually the people asking the germane questions*.

  18. Cheong says:

    No worry, it's not contributor's job in a forum to make sure everyone's problem got solved.

    Just tell them what would help. If they don't cooperate to try, leave them alone. Afterall, you've leave the possibly est solution on the thread. If some other having similar problem find the thread, they'll read the solution, possibly follow your adivse to try it out, and possibly post back whether it works or not. If there is really problem, they may ask in the thread or make a new thread to discuss.

    There's no point in making yourself feel frustrated for helping others that don't help themselves.

  19. Anonymous Coward says:

    Some thoughts:

    * People aren't naturally critical. They need to be taught to be critical, and it's hard.

    * If people think they know something, this holds doubly so.

    * People don't always actually think when they have a conversation. Most people just give canned responses to key phrases. This might be exacerbated by skimming.

    * Knowledge yields bias. If you're an expert at hammering, every problem looks like a nail.

    * There is a level of intelligence below which people can't see that others are more competent, because they are too stupid to understand why.

    * People get emotionally invested in things. The reasons can vary, from pride, to work already done, to money already spent. This leads to things like the Death March and the Bottomless Pit.

    * Intelligence evolved not primarily to make sense of the world, but to defend one's actions from one's fellows.

  20. Pi says:

    The most valueable thing I got out of my studies is that I had to have specification-documents that I wrote reviewed by fellow students. I got hammered with valid criticism, especially at the beginning, and learned to deal with it.

  21. John says:

    Unreal… I had the same exact conversation just a few days ago. Perhaps this is endemic.

  22. Gabe says:

    Leo Davidson: "You have to trick him into trying it "again" (i.e. for the first time) a bit later, at which point the problem gets resolved."

    You've just described blogs.msdn.com/…/83244.aspx, where Raymond suggests asking the user to "blow the dust out of the connecter" rather than asking them "Is it plugged in correctly?" (the answer to which is invariably "Of course it is! Do I look like an idiot?").

Comments are closed.