Distinguishing between normative and positive statements to help people answer your question


Often, we get questions from a customer that use the word should in an ambiguous way:

Our program creates a widget whose flux capacitor should have reverse polarity. Attached is a sample program that shows how we create the widget with Create­Widget. However, the resulting widget still has a flux capacitor with standard polarity. Can you help us?

The phrase should have reverse polarity is ambiguous. The question could be

We would like to create a widget whose flux capacitor has reverse polarity. Attached is a sample program that shows how to create a widget whose flux capacitor has standard polarity. How should we modify it in order to get reverse polarity?

Or the question might be

We would like to create a widget whose flux capacitor has reverse polarity. Attached is a sample program that attempts to do so, but the resulting widget has a flux capacitor with standard polarity. The polarity flag appears to be ignored. Are are we doing something wrong, or is this a bug in Windows?

The first is a normative statement: "This is what we would like to happen." The second is a positive statement: "This is what is happening."

The distinction is important because the two types of statements require very different types of responses. If have a program that does X, and you want to change it to do Y, then you're asking for help working through the Y feature, clarifying the documentation, informing you which flags you need to pass, and so on. But if you have a program that tries to do Y and fails, then you're asking for help debugging your code and possibly identifying a bug in the operating system.

Being clear with your request means that you can avoid wasting a lot of time when the wrong set of people are called in to help you out.

Here's another example of vague use of the word should:

We're trying to do XYZ. We've been told that it is blocked for security reasons, but there should be a way to do this.

In this case, it is not clear what the customer means by the phrase should be a way to do this. It could be

We're trying to do XYZ. We've been told that it is blocked for security reasons, but we think that Windows should be changed to allow our scenario. How can we file a change request with the Windows security team to make an exception for us?

Or the customer might be trying to say

We're trying to do XYZ. We've been told that it is blocked for security reasons, but we think that there is a way to get the effect of XYZ without triggering the security issue. Can you help us find it?

Note that in both cases, the customer either failed to asked a question or made some statements and asked for nonspecific advice, which is effectly the same as not asking a question. If they had remembered to ask a question, then that question would have clarified what they intended by the word should.

Bonus chatter: A physicist classmate of mine got a chuckle out of the phrase flux capacitor because it combines two physics terms in an impressive-sounding but mostly nonsensical way.

A capacitor is a device which stores electric potential. In the hydraulic analogy of electricity, a capacitor is a rubber diaphragm that separates two parts of a pipe, but which "stores" water flow by stretching and "discharges" the water flow by returning to its rest position.

Flux is cross-sectional flow per unit time. Water flux is volumetric flow rate (liters per second per square meter): it measures how vigorously the water flows across a boundary. Magnetic flux measures the strength of a magnetic field.

The combination is nonsensical because the units don't match. A capacitor stores potential, whereas flux is measured in current or magnetic field strength. But if you generalize the term capacitor to mean "a thing that stores stuff", then a flux capacitor is a device which stores a magnetic field.

Such devices already exist today. They are called magnets.

Comments (28)
  1. Joshua says:

    I've given the answer to "there should be a way to do this" with the whole range from "here's how" to "that is contrary to known laws of physics".

  2. Brian_EE says:

    I like the hydraulic analogy. I once used it in the reverse direction to explain my well water system to one of my just-out-of-college coworkers. The electric submersible well pump is a charge pump, and the diaphram pressure tank is a capacitor. Your water pipes exhibit inductive and resistive properties. The backflow preventer is a diode, and the faucets at the end are switches.

  3. Mordachai says:

    Maybe I'm missing something… but it seems to me to be the sort of question one would ask when they're not sure of which of the two meanings they should be going for.  i.e. – If there is a way to accomplish this without violating the security rules, then please show me.  If there isn't, then can you suggest any alternatives?  If not, then let me know, and we'll have a conversation about escalating this to an exception request.

    Similarly, we know that we want this behavior (reverse polarity) – and we are failing to achieve it.  Can you help us figure out what to do to this code to make it work?  Which again leaves open either possibility – that they're on the right track, but have found a bug or are missing some subtlety to get their code to work; or that they're not even close, that they're only asking for a standard polarity and the fundamental need is the same: how to get from here to the desired outcome.

    I know from my experience that it's often not clear what the missing element is – and help getting from "here is our best attempt so far" to "this is the correct way" -or- "that is not doable in the way you're approaching it – here are some materials to give you a broader / deeper understanding so you can reformulate your attempt in a way that is aligned with how things are intended to work…"

  4. Marcel says:

    In the German translation it's actually called "Flux Kompensator" (instead of "Kondensator"). And in Wikipedia they claim that in Doc Brown's drawing it read "Flux compression". In any case the term has survived for 30 years now, so they did something right ;)

  5. Anon says:

    "When I create X, it should be Y." is a perfectly straightforward statement. It says "When I create X, I'm expecting it to be Y, but it is not Y," only with half the words. I don't understand how that could possibly be ambiguous. If they were expecting X to be Y, they'd never want help to begin with.

    "There should be a way to Z" is the same as saying "We expect to be able to Z, and if there's currently no way to do that, you need to add it." I don't understand how that could possibly be ambiguous. They're technically looking for help, but they're not asking how to do something, they're making a feature request.

    [You'd be surprised how many customers say "When I create X, it should be Y" when they are not saying "When I create X, I'm expecting it to be Y, but it is not Y." They are actually saying, "Our design specification says that when I create X, it should be Y." The question is actually your type 2, not type 1. "Is it possible to create an X that is Y? If so, how?" -Raymond]
  6. dave says:

    I consider "why?" to be the appropriate response to "there should be a way to do this".

    In a related (at least in my mind) vein, my response to seeing promotional material that claims "the Frobnitz 2100 is designed to (blah blah)" is "but unfortunately it failed to achieve its design objectives".  

  7. Joshua says:

    "We've been told that it is blocked for security reasons" seems to come up a bit much these days even when running code as full admin on the machine in question. If you persist without providing justification, the asker is going to respond with something like /expletive/ you and force the issue with a disgustingly brutal technique if able. If you think I'm kidding then think again. Signed driver requirement can be defeated.

  8. Mark says:

    Anon – that kind of "it's obvious" argument is what makes people see technical people as rude and disconnected. You can't answer their question without further context. For example, if the attached example said "CreateWidget(POLARITY_REVERSE)", then it would be obvious that they're pointing at a bug in Windows. However, if the example said "CreateWidget(POLARITY_USER_DEFAULT)", do you assume they've tried with the other flag? Do you guess they've tried changing the user default? Do you use your psychic debugging skills to point out that POLARITY_USER_DEFAULT is always treated as POLARITY_STANDARD when compiling for Windows versions before 7, or can be overridden by group policy or appcompat shims?

  9. Yuri says:

    Our program creates a reversed polarity flux capacitor widget whose output should create a spatio-temporal vortex.

  10. smf says:

    "Such devices already exist today. They are called magnets."

    For a magnet to be like a capacitor you would have to be able to store a magnetic field over time in the magnet with the magnet itself giving off a field until it was triggered externally where it would be released quickly.

    If the flux capacitor was real then it could be a naming glitch, like javascript having nothing to do with java or flash mobs having nothing to do with adobe flash. As time travel isn't possible yet then we can't know whether something that would enable it could be regarded as flux and be controlled in a theoretically similar way to a capacitor.

    Or you can just LOL, LMAO & ROFL at it.

  11. Dylan says:

    I would say if you wanted to store current, that sounds a lot like a description of an inductor.  It does act like a magnet but that's generally a side effect.

  12. T. West says:

    I have to say that I learned something today.  Like Anon, even on close examination, I would have assumed that the "should" was utterly non-ambiguous.  Raymond's experience, on the other hand, makes it clear that it is not.  I'll have to try and be a little more careful in future to ensure my requests are as clear as they seem to me.

  13. Peter says:

    On the side note: If "Flux" refers to movement of something past a fixed point, then storing and releasing it (the flow, not the substance that is flowing), could be seen as a reasonable description of time control.

  14. cheong00 says:

    I have no problem with the original ambiguous statement though. Since he also drop the source file with the enquiry, it should have been easy to check the intention (whether he tried to pass certain flag to CreateWidget() or tried to modify the flux capacitor created later.

    If I somehow get around the corner to answer this type of question, I'll look into the source code to confirm I don't misread the question anyway. (People sometimes miswrite questions, and it happens a lot in international forum that use English of major language of communication)

    [It's rarely something simple like passing the right flag. It's usually a rather large program, where it's not clear what is going on. And if the question is "How do I do it?" then you don't even need to waste time trying to reverse-engineer their spaghetti program. -Raymond]
  15. cheong00 says:

    Btw, if you think capacitor as something that stabilize voltage, "flux capacitor" could have mean something that will somehow regulates the strength of magnetic field using some sort of negative feedback mechanism.

  16. Heavy says:

    Never thought about it but I would assume you just multiply the quantities (flux times capacitance) and marvel at the resultant units. What's fluxing and what's capantisizing I do not know, but flick that toggle switch to the 'on' position, move that baby at 88mph ground speed, and kick it with 1.21 gigawatts of powpow and you're gonna see some serious sh*t!

  17. cheong00 says:

    When I see "Water flux", it reminds me of a documentary programme I saw a few years ago regarding sewage system of Paris.

    To ensure the sewage is properly treated (by sediment settling) before discharged to The Seine, they have lots of underground water tanks that has sensor connected with pump. In raining season, when one tank is nearly full, pumps will be activated to pump water to other tanks that are not full. Once or twice per year, there would be occasion that the rain filled all the tanks and they have no choice but to discharge sewage to river directly.

    Those tanks are effectively "water flux capacitor" for the sewage system.

  18. Drak says:

    And here I though that a flux was something that is constantly changing. How does one 'store' that?

  19. asdbsd says:

    The meanings are kinda close though. Maybe it's a good enough try? People who ask for help are often confused and it doesn't help if when they tried their best to make sense, they get "You have submitted the paperwork to the wrong window".

    It's similar to kernel-colored glasses. From your POV it's obvious that asking to change Windows and how to solve their problem are different things. But they may not even be thinking in these categories. They think "The task is not so unusual, it should be possible somehow, should it? Maybe we're not seeing it. Maybe we should do it some other way. Maybe they really forgot it, then yeah I guess add it?"

  20. Gabe says:

    Flux is the stuff that protects welds. A flux capacitor is something that holds flux to be discharged as needed, right? Here's what a flux capacitor looks like: http://www.bing.com/…/search

  21. Danny says:

    @Gabe – Bing, really? are you rubbing Ray in order to hold hands with you?

    @Ray – Professor Michio Kaku was telling in a interview for Discovery Science that he would teach his students for years at his Uni that light cannot be bend by materials only by gravity. Then there was this metamaterial discovery where the radio frequency was closer and closer each year to the visible light and he will definitely see in the near future a true cloaking device made from this materials that truly bend light. So even in the 1st interpretation (of your friend) a flux capacitor is yet to be discovered. Never say never

  22. DWalker says:

    The word "should", in US English, is very problematic.  It's amazingly easy to confuse the reader, and the word leads to misunderstandings.  

  23. alegr1 says:

    >he would teach his students for years at his Uni that light cannot be bend by materials only by gravity.

    Gravity doesn't bend light. Gravity bends space. If you go along the beam of light with a straightedge, at every point the beam will be straight (even though the beam may go around a white dwarf), and will actually be a shortest path between two points. The space curvature cannot be detected locally.

  24. cheong00 says:

    [It's rarely something simple like passing the right flag. It's usually a rather large program, where it's not clear what is going on. And if the question is "How do I do it?" then you don't even need to waste time trying to reverse-engineer their spaghetti program. -Raymond]

    Since he mentioned CreateWidget() already, it shouldn't need much time to "Find all" occurrence of this keyword. And yes I know it's usually not simple as passing a flag in there, but it should usually be clear within 5 lines (or a function called within 5 lines) to see what the intention is. If the intention cannot be shown within the 5 lines limit, they seems to have bigger problem.

    Like what I said, if I get around the corner to decide answering this kind of question, when there's code attached I'll usually check if my solution fits in the source given too. Sometimes I can find solution for one problem on the web, but the solution won't fit for one reason or another. Take a question I answered previously on MSDN forum for example. The asker asked why their code using iTextSharp from NuGet to generate PDF don't work, and included link to download the whole project. And then we quickly found that it was in fact a universal project that's designed to run in Metro/Modern environment.

  25. Danny says:

    @alegr1 – nitpicking huh? I believe you did see my point but if we are at nitpicking corner then let me do it too. Gravity bends space-time continuum (not just space as you said it). There, you like that?

  26. Count Zero says:

    It is kind of funny how the statement

    "The combination is nonsensical because the units don't match. A capacitor stores potential, whereas flux is measured in current or magnetic field strength. But if you generalize the term capacitor to mean "a thing that stores stuff", then a flux capacitor is a device which stores a magnetic field."

    does not work in Hungarian. We call the capacitor "kondenzátor" which sort of means a device that stores AND compersses stuff.

  27. David Totzke says:

    I give you the birth of the Flux Capacitor.  

    http://www.youtube.com/watch

    They have separated a neutron from its magnetic moment. For real.

  28. Marc K says:

    "Should" is one of my favorite "weasel words". (en.wikipedia.org/…/Weasel_word)

    "If we install the patch, it should fix the issue."  If it doesn't fix the issue, we made no actual promises.

    But, this post does open my eyes and will help me craft better support cases.  Raymond won't benefit, though, as I still haven't figured out to get support cases to someone as knowledgeable as Raymond.

Comments are closed.

Skip to main content