A problem-solving framework
This post is adapted from a presentation I gave several years ago at Toastmasters, I dug it out because I need to start using D.E.A.R. more often.
I recently finished the game Portal 2 on the Xbox and thoroughly enjoyed it. This is surprising because Portal 2 is a puzzle game and I rarely play that type of game because they make me feel, well, dumb.

Portal 2 is a first-person puzzle-platform game. As a player, you work your way through a changing mechanical maze. Each room in the maze has a puzzle to be solved. You solve the puzzles by placing portals at various places around the room and teleporting to complete certain objectives in order to be able to move to the next room. Rinse and repeat.

I mentioned before that this type of game is not normally my cup of tea, but I got seriously hooked. As the game progressed, I found myself more and more motivated to secure time to play and try to solve at least one room a day. It was fun and even though I didn’t realize it, I was learning something.
At the beginning of each room I noticed that I would have a small amount of anxiety, worrying that I might not be able to figure out how to solve the problems it presented. Many times I would recognize problems I had already solved (the game builds on itself) and be able to proceed but sometimes it would take much more trial and error.
Sometimes when I would get really stuck on a problem in a room it would be because I am not awesome at working the joystick, but most times it was because I was struggling to solve the problem itself. The game presents hard physics-based problems which many times require envisioning movements and actions which we will most likely never see in real life.
It was upon solving one of these particularly brain-melting problems, that I hit upon the idea that figuring how I was solving the problem was as important as what I was solving and could come in pretty handy the next time I found myself banging my head on a wall (virtual or otherwise). So I started to pay closer attention to the actions and steps I was taking. I then took what I found and distilled into a simple framework.
I give you, D.E.A.R.
A set of steps/processes/questions to help get a foothold on the problem you are trying to solve. As you work your way through the acronym hopefully the problem you are trying to solve becomes clearer and a path forward presents itself.
D – Decide / Determine / Describe
- Decide to solve the problem or not, sometimes not solving the problem is the solution
- Determine the outcome you are working towards. What do you want to happen, what is your goal?
- Determine the problem statement. What is keeping you from your goal?
- Describe the problem. Write it down or try Rubber Ducking!
Rubber Ducking – Place a rubber duck on your monitor and describe your problems to it. There’s something magical about stating your problems aloud that makes the solution more clear.
The Pragmatic Programmer
More on Rubber Ducking:
Rubber Ducking -The Pragmatic Programmer Wiki
Why Rubber Ducking is One of Your Greatest Resources as a Developer
E – Explore / Evaluate / Experiment
- Explore the problem that you have described. Look at it from other angles. Is it the main problem? Are there others? Are you solving the right one or are you solving it in the right order?
- Evaluate your assets. What or who do you have at your disposal that can help you solve the problem? Have you solved something like this before?
- Evaluate your constraints. Do you have a deadline? Do you have a budget? Are there objects that are, as they say, immovable? This is where it really gets interesting. Are they really immovable? What would you have to do to make them move?
- Experiment! Break the problem down into smaller pieces and bring your assets and constraints to bear on each piece. Try something new. Now try it backwards or sideways!
A – Apply / Action / Assess
- Apply what you learned from D & E.
- Take Action! Go! Fight! Win!
- Assess potential solutions. Is there one that works? Does it solve the entire problem or all of the problem that can be solved?
R – Repeat / Remain
- Repeat the steps as many times as it takes to ultimately solve the problem. Change your approach based on what you learned. As long as you learn from it, it is not time wasted.
- Remain with the problem until it is solved. Again the solution may be to not solve the problem or not solve it at this time, but you determine that, not the problem. Solve it or make your peace with it.
You may not need all of the steps listed above to solve your problem, many times just describing the problem helps you come up with the solution.
None of these steps is a magic bullet, they are simply a way to process the problem with less fear. I have found that when I have a problem and consciously think about solving it using D.E.A.R., my anxiety about the problem is lessened because I know I am already on my way to solving it. I have used the framework in the past and it worked, which helps me be positive that I will find a solution this time.
The next time you find that you have a problem, do you think you can find a solution?
Yes D.E.A.R.
Feature Image by Max DeRoin from Pexels