When the option becomes so second-nature you forget that it’s an option


A user of the imaginary Program Q program wanted to write an automated test that created a table, then ran various sub-test which communicated among each other by updating that table.

When my test tries to create a table, the program asks the following question:

q install server -r testdb

Setting up this machine to be a registered table server...

Registered table servers must adhere to Microsoft information 
security policies. See http://programq/policy for details.
If you have questions, contact mailto:qpolicy.

Do you agree to adhere to Microsoft policies regarding
registered table servers (y/n/q)?

Is there a way to suppress the question? I can't pre-create a single server that all the tests connect to, because multiple tests running simultaneously would end up colliding with each other. I would prefer that each test run on its own isolated table server, but when I try to install a table server on the machine being tested, I get the above prompt.

Why not just create an unregistered table server instead? Just leave off the -r flag. Give your problem description, there appears to be no need for the table server to be registered.

Ah, didn't know about the ability to create an unregistered server. Works great!

The user was apparently so accustomed to creating registered table servers that he didn't realize that there was any other kind. My guess is that he had no idea what the -r flag did; he just cargo-culted it from somewhere.

Remember: The target audience for Program Q is not non-technical end-users. The target audience is other programmers, and this person was clearly a programmer since he was writing an automated test!

Comments (17)
  1. Entegy says:

    Who hasn't had a brain-fart when it comes to switches?

  2. Brian_EE says:

    "unregistered table server"… makes me think of someone bringing me food at a restaurant along the southern US border.

  3. Jeffrey says:

    Everybody is conditioned to run "!debugextensionQ -s", when really "!debugextensionQ -r -t" is closer to what most people want.  I guess nobody ever ran "!debugextensionQ -?" to see all the cool options available.

    The challenge is to design your software to be discoverable by busy people, without nagging the user or adding giant blinky arrows to the UI.  I frequently cringe when I see others using software that I've designed — that's a difficult challenge!

  4. Mike says:

    Well to be fair a lot of programmers have little idea how to install things. They have IT lackies for that especially if they've worked for large shops with a team for testing a team for dev, a team for UI a team for infrastructure etc they just know their piece. It is management Henry Ford style why have diverse skilled people that know how to build a car when you can hire people of the street that all they know how to do is put tires on?

    I worked in IT with devs and would get support calls on how to connect to wifi for people working in the same org for the past 5 years. Also they didn't know how to create a svn repository even though they were the primary users of svn. We'd have to create it for them and tell them were to point their client too.

  5. JJJ says:

    This is how people use the tar utility also, thinking that "xzvf" is some sort of indecipherable magic incantation that must be performed.

    (see also https://xkcd.com/1168/)

    Just learn what the letters mean, already.

  6. JDP says:

    tar –help

    boom, done!

    do they not teach people how to fish any more? Developers are now tyrants, not the servants of their systems.

  7. Ian Boyd says:

    Its a usability issue. If I, as the intended user of the system, can't intuitively figure out how to accomplish my goal: the interface is at fault.

    [So it should be converted to a GUI app? -Raymond]
  8. Drak says:

    @JJJ: My first thought exactly (except it was tar czvf… create, zip, verbose(?), file. Just not sure about the 'v' being verbose. It's been a long time since I checked what it meant)

  9. João says:

    Why would people use imaginary programs anyway?

  10. Sam Blake says:

    I was trying to learn rsync last night, and I noticed that most web tutorials recommend the -a (–archive) flag.  In the spirit of trying to be a good programmer, I decided I'd check the –help and see what that flag did:

    -a, –archive     archive mode; equals -rlptgoD (no -H,-A,-X)

    Suffice it to say, it was a lot more tempting to just blindly use the flag than to actually look up each of those other flags and try and tease out the subtleties of how they interacted with each other.

    (Turns out it's a good thing I checked, because that flag actually WASN'T something I wanted to be using. Luckily, a better programmer than me had already done the analysis: nb.nathanamy.org/…/rsyncing-jekyll)

  11. 12BitSlab says:

    I will plead Guilty on using flags without fully understanding them and throw myself on the mercyof the court.

  12. Joshua says:

    @12BitSlab: The court of computation has no mercy and dispenses its golemic justice without thought or partiality.

  13. stuartd says:

    What does the 'q' stand for in '(y/n/q)'?

  14. stuartd: I'd assume that "n" acts as if you hadn't passed -r (since if you're not going to abide by the policies, you should get an unregistered table server in the first place), and "q" just quits.  At least, for this hypothetical example.

  15. 640k says:

    You, as a developer, always has a choice to NOT being in a hurry. If you can't be bothered to learn to use your tools right, please leave the software industry. NOW.

    With that said, most CLI apps has stupid syntax. For many common utils in both dos/windows/unix it's not hard to develop better ones yourself, especially when it comes to input syntax. When I develop one, I always write the usage message first, and optimize the syntax to be intuitive.

    Another mistakes people, especially developers without much CLI experience, do, is assuming that complex syntax means that applications can do anything. It a non sequitur.

  16. Spork says:

    Some MS programmers are retarded. Who would have thought!?

  17. Klimax says:

    @Spork:

    http://xkcd.com/1168/

    Try again…

Comments are closed.