Learning a new problem space can be a challenge. Especially when there’s no map.
While writing books for the past several years, I’ve learned a more effective approach for chunking up and solving problem spaces.
Each new book is a new problem domain.
I can’t afford to churn or be inefficient while ramping up. I’ve basically learned how to get myself and my teams up to speed faster by using a process.
This process has served me well. I hope it does the same for you.
Problem Domain Analysis
Here are the key steps:
- What are the best sources of information?
- What are the key tasks and questions for this problem space?
- What are the key hot spots this problem space?
- What are the possible answers for the key questions?
- What are the empirical results to draw from?
- Who can be my sounding board?
- What are the best answers for the key questions?
- What are the problem repros and the solution repros?
Here is an elaboration on each step.
1. What are the best sources of information?
Finding the best sources of information is key to saving time. I cast a wide net then quickly spiral down to find the critical, trusted sources of information in terms of people, blogs, sites, aliases, forums, … etc. Sources are effectively the key nodes in my knowledge network.
2. What are the key tasks and questions for this problem space?
This step includes making al list of tasks that users would need to perform and a list of questions that users would have. Identifying the questions and tasks is potentially the most crucial step. If I’m not getting the right answers, I’m not asking the right questions. Questions also focus the mind, and no problem withstands sustained thinking (thinking is simply asking and answering questions).
3. What are the key hot spots in this problem space?
This is about finding the hot spots. This means finding the key buckets and categories for this problem space. It’s not long before questions start to fall into significant buckets or categories. I think of these categories as a frame for the problem space. By framing the space, you can organize the questions and tasks in a meaningful way. Instead of a laundry list of items, the tasks and questions are grouped into hot spots. You can then use the hot spots or frame as a lens. You can also use it to gather, organize, and refine more information.
4. What are the possible answers for the key questions?
When identifying the answers, the first step is simply identifying how it’s been solved before. I always like to know if this problem is new and if not, what are the ways it’s been solved (the patterns). If I think I have a novel problem, I usually haven’t looked hard enough. I ask myself who else would have this problem, and I don’t limit myself to the software industry. For example, I’ve found great insights for project management and for storyboarding software solutions by borrowing from the movie industry.
One pitfall to avoid is that just because a solution worked in one case doesn’t mean it’s right for you. The biggest differences are usually context. I try to find the “why” and “when” behind the solution, so that I can understand what’s relevant for me, as well as tailor it as necessary. When I’m given blanket advice, I’m particularly curious what’s beneath the blanket.
If you know the type of problem you’re dealing with, it helps to analyze potential answers. See 4 Types of Problems.
5. What are the empirical results to draw from?
Nothing beats empirical results. Specifically I mean reference examples. Reference examples are short-cuts for success. Success leaves clues. I try to find the case studies and the people behind them. This way I can model from their success and learn from their failure (failure is just another lesson in how not to do something).
6. Who can be my sounding board?
One assumption I make when solving a problem is that there’s always somebody better than me for that problem. So I then ask, well who is that and I seek them out. It’s a chance to learn from the best and force me to grow my network. This is also how I build up a sounding board of experts. A sounding board is simply a set of people I trust to have useful perspective on a problem, even if it’s nothing more than improving my own questions.
7. What are the best answers for the key questions?
The answers that I value the most are the principles. These are my gems. A principle is simply a fundamental law. I’d rather know a single principle, then a bunch of rules. By knowing a single principle, I can solve many variations of a problem. The experts and sounding board help create and vet the answers along with the research team.
8. What are the problem repros and the solution repros?
Creating repros of the problems and repros of the solutions helps test results. A repro is simply a reproducible set of steps. I’m a fan of testing results … It’s one thing to have an answer that sounds good, it’s another to test it against the scenario. I’m also a fan of scenario-based testing because this tests the answer against a specific, concrete instance. Either it works or it doesn’t. Rather than speculate or debate solutions, testing solutions is a more effective approach. Once you can reproduce a problem, you can also share it with others and get more eyes on the problem.
What Do You Know, Don’t Know, and Need to Know Next?
How do you keep from getting stuck? One of my favorite questions to ask is, “what do we know … don’t know … and need to know next?” Asking what you know is a way to quickly remind yourself of what you’ve figured out. It also helps show some signs of progress. Asking what you don’t know can be an eye opener. Now that you’ve recapped what you know, what you don’t know might expose some obvious things you’ve overlooked or some hot topics to explore. With a firm handle on what you know and don’t know, now you can prioritize what you need to know next. Chip away at the stone.
Now, while I’ve left some details out, I’ve hopefully highlighted enough for you here that you find something you can use in your own problem domain analysis.
You Might Also Like
Satisficing to Get Things Done
Image by B¤§§L¥n