My friend Rob Lambert enjoyed my post "Ask Great Questions!" And in an email, he mentioned a blog entry he wrote last year - http://blogs.imeta.co.uk/RLambert/archive/2008/10/17/is-software-testing-like-being-in-the-cia.aspx . Very nice!
The blog post refers to The Phoenix Checklist, which seems to me like a very useful framework for questioning in general. I'm going to reread Rob's blog and this list periodically, and hopefully learn how to ask better questions.
From "Thinkertoys" by Michael Michako:
Phoenix is a checklist of questions developed by the Central Intelligence Agency to encourage agents to look at a challenge from several different angles.
The Phoenix Checklist
The Problem
- Why is it necessary to solve the problem?
- What benefits will you gain by solving the problem?
- What is the unknown?
- What is it you don't yet understand?
- What is the information you have?
- What isn't the problem?
- Is the information sufficient? Or is it insufficient? Or redundant? Or contradictory?
- Should you draw a diagram of the problem? A figure?
- Where are the boundaries of the problem?
- Can you separate the various parts of the problem? Can you write them down?
- What are the relationships of the parts of the problem?
- What are the constants (things that can't be changed) of the problem?
- Have you seen this problem before?
- Have you seen this problem in a slightly different form?
- Do you know a related problem?
- Can you think of a familiar problem having the same or a similar unknown?
- Suppose you find a problem related to yours that has already been solved. Can you use it? Can you use its method?
- Can you restate your problem? How many different ways can you restate it? More general? More specific? Can the rules be changed?
- What are the best, worst, and most probable cases you can imagine?
The Plan
- Can you solve the whole problem? Part of the problem?
- What would you like the resolution to be? Can you picture it?
- How much of the unknown can you determine?
- Can you derive something useful from the information you have?
- Have you used all the information?
- Have you taken into account all essential notions in the problem?
- Can you separate the steps in the problem-solving process? Can you determine the correctness of each step?
- What creative thinking techniques can you use to generate ideas? How many different techniques?
- Can you see the result? How many different kinds of results can you see?
- How many different ways have you tried to solve the problem?
- What have others done?
- Can you intuit the solution? Can you check the result?
- What should be done? How should it be done?
- Where should it be done?
- Who should do it?
- What do you need to do at this time?
- Who will be responsible for what?
- Can you use this problem to solve some other problem?
- What is the unique set of qualities that makes this problem what it is and none other?
- What milestones can best mark your progress?
- How will you know when you are successful?