Fabulous Adventures In Coding

Eric Lippert's Blog

A Parable

Once upon a time I was in high school.  Ah, the halcyon days of my youth.  And one day I was sitting in class, minding my own business when the teacher said:

 

"Does anyone have a thin metal ruler?"

 

No answer.  Apparently no one had a thin metal ruler.

 

"No?  How about a nail file?"

 

No answer.  Now, I cannot imagine that of all the girls in the class, not one of them had a nail file.  But I can well imagine that none of them wanted to share it with a teacher.

 

"No?  Hmm."

 

So I piped up: "What do you need a nail file for?"

 

"I have this big staple in this document that I need to remove."

 

Upon which point one of my classmates mentioned that he had a staple remover in his pencil case.  Problem solved.

 

 

Over and over again I find that script customers (both internal consumers here at Microsoft and third-party developers) frequently ask questions like my teacher.  That is, they have a preconceived notion of how the problem is going to be solved, and then ask the necessary questions to implement their preconceived solution.  And in many cases this is a pretty good technique!  Had someone actually brought a thin metal ruler to class, the problem would have been solved.   But by choosing a question that emphasizes the solution over the problem, the questioner loses all ability to leverage the full knowledge of the questionees.

 

When someone asks me a question about the script technologies I almost always turn right around and ask them why they want to know.  I might be able to point them at some tool that better solves their problem.  And I might also learn something about what problems people are trying to solve with my tools.

 

Joel Spolsky once said that people don't want drills, they want holes.  As a drill provider, I'm fascinated to learn what kinds of holes people want to put in what kinds of materials, so to speak.  And sometimes people think they want a drill when in fact they want a rotary cutter...

 

Published Monday, November 03, 2003 2:18 PM by Eric Lippert
Filed under:

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

 

Blake said:

My preferred formulation is "Don't ask a user what they want, ask them what they want to do; then give them what they need to do it."
November 3, 2003 4:16 PM
 

Fabulous Adventures In Coding said:

Before I get into today's blogging, a quick note about my recent post on How To Not Get A Question Answered

March 25, 2008 1:29 PM
 

Fabulous Adventures In Coding said:

Raymond has had lots of great posts over the years on how to not get a question answered. Some of the

June 17, 2008 6:44 PM

Leave a Comment

(required) 
(optional)
(required) 
Submit

About Eric Lippert

Eric Lippert is a senior developer on the Microsoft C# compiler team. Before that he worked on the framework of Visual Studio Tools For Office. Before that, he worked on the compilers, runtimes and tools for VBScript, JScript, Windows Script Host and other Microsoft Scripting technologies. He lives in Seattle and spends his free time editing books about programming languages, playing the piano, and trying to keep his tiny sailboat upright in Puget Sound.

This Blog

Syndication


© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Microsoft
Page view tracker