Procedural Thinking vs Problem Thinking
Procedural Thinking is when you work out the solution to a problem in a step-by-step fashion. Examples would be following instructions for setting up a dev environment based on company documentation, going through a text document you created for yourself to remember how to generate a certain ad hoc report, or implementing steps found online for sorting an array of objects by a particular key.
There is a definite need for this type of thinking, and it is valuable. But, it's not quite as valuable as the next type of thinking I'll describe.
Problem Thinking is when you think only of the problem at hand, focusing your efforts on generating ideas for different ways the problem can be solved. This type of thinking is completely separate from the Procedural Thinking; there are no thoughts of "steps" when thinking about a potential solution to a problem. The focus is not on the solution; it's on the problem. The solution to the problem emerges when it has been understood well enough. If you can define the problem well enough, it's already solved.
Example: Getting a Book Down from a Tall Cabinet
Here's an example of Problem Thinking. Imagine there is a tall cabinet on the kitchen counter with a cookbook on top of it. You want the book, but are too short to reach it. Procedural Thinking would have you doing something in steps to get it down. "Step 1: Get the stool. Step 2: Stand on stool. Step 3: Grab the book." Problem Thinking has you instead thinking of the problem. The problem isn't that the book is too high. The real problem is that you want the book. Here's the solutions for getting the book based on Problem Thinking:
- Buy a new book of the same kind. It's too far up, but there's nothing special about it. Just buy a new one.
- Find a way to knock it down with a broom.
- Blow it down with a leaf blower.
- Take apart the cabinet. Cabinets are overrated anyways, since most things on top of them just get stuck there. Build a new cabinet that's shorter to replace it.
- Bribe, trick, or blackmail a taller person into getting it down for you.
- Ask the book to come down to you.
- Climb onto the counter to get closer to the book.
- Put an animal up there such as a cat. The cat will inevitably start to wreak havoc, as cats do, and the book will fall down as collateral damage.
- Use a grappling hook to latch onto the book.
- Find a way to make yourself taller, such as by using a stepping stool.
Some of the solutions seem crazy. Others may have caught you by surprise. The first one, buying a new book of the same kind, caught me by surprise, because it seems so ridiculous when everyone knows a step stool would work quickly and easily. But, buying a new one is a solution you've used in the past, plenty of times. Ever lose a frisbee on a neighbor's roof? Ever lose a tennis ball over the fence? We often choose to replace things when they seem out of reach.
Another crazy solution that caught me by surprise was taking apart the cabinet. It seems like overkill, and in this case it might be. But, again, that's a solution that people use all the time. When people lock themselves out of a room in the house, they often take apart the door handle.
Finally, the most ridiculous by far is asking the book to come down. That seems crazy, and maybe it is, but what if it worked? Have you ever tried it?
Problem Thinking is a more creative skill. In software engineering, problem thinkers are better able to come up with systems solutions. I can decide I want a blogging platform and figure out how to make it happen. I don't need to be given instructions on how to build one, and I may not even have to build one at all since there are dozens of solutions out there for that. Procedural thinkers tend to ask plenty of questions when working on something. Asking questions is good, but the quality of the questions matters. If the questions are about how to execute some part of the solution and not about understanding some aspect of the problem, then the asker is a procedural thinker.
Leave a Comment