All my models start messy. Yet, I find that my messy models are actually quite useful. It forces me to acknowledge my ignorance. The longer I feign ignorance, the longer it takes for the mess to surface. The more I appeal to my ego with “Hey, look! My model is very cool!”, the longer I delay learning something useful.
I caught myself saying this the other day and it made me think about how I deal with a mess. For me, a messy problem is one that has more than 2 inputs and outputs. My brain struggles to resolve that. I just can’t do NxM matrices in my head.
Making a mess less
The first thing I do is accept the mess and then I play with these 3 techniques. There are others but I find that I lean on these early in the exploration. I also don’t have a recipe or process of which technique I use when. I simply try something that looks interesting to me, or the focus on a part that is most obscure.
Find the range
I pick just one visible dimension in problem – a single input or output. I play a seemingly bizarre games of extremes with that variable, and adjust the extremes of that variable towards what feels “normal”. I want to find the range of usefulness.
Say I want to model the time it should take to open a bank account. I will ask “How about 1 minute?”, and then “How about 1 month?” I play with the answers and adjust so that it sort of makes sense that it is somewhere between a few hours and a day. Now I know that anything outside of that time range is irrelevant. I can shift focus on other variables – progress!
Setting the range gives me a feedback loop. When I play with other variables, I can see if they shift values outside the useful range. Sometimes, the range is consistently being violated by other variables. In such a case, I just discard what I thought was the useful range, and play elsewhere in the mess. The true range will reveal itself eventually.
Find reactive pairs
I look for pairs of variables where the change in one results in a change in another. Here, I am trying to understand moving parts, or cause and effect. Certainly, changing one may result in several other changes but I am interested in just one pair. Sometimes I just guess. Other times I just get lucky. The most interesting are the ones that take me by surprise, accidentally.
For example, I want to figure out how best to process a very long queue of insurance claims. I may start with the sort order for the queue. If I set sort order by descending monetary value then we may find that the assessment process requires different steps, different processing time. And so I learn that the sort order results in different claim assessment processes. This may then trigger a thought around batching claims by classifying incoming claims and look at size of the resulting batches.
I find that the most useful pairs are the ones that oppose each other. These reveal a natural tension and offer a powerful starting point for finding a solution. The solution lies in answering the question “How do I release or control that tension?”. I am aware, though, that finding the solution will create tension elsewhere. That’s design – focus energy on the part that has the highest yield and live with the rest.
Make linear systems
These messy problems have many inputs and outputs making it difficult to model. So, for the variables that are known to me, I fix them to sensible defaults. Then I play with just one variable. In essence, I make the system a first order system – just one input and one output. Such models are easier to handle, even in thought experiments. Once I understand how that “linear version” of the system works, I have more options available. I can choose to fix this variable to a constant and make another “linear version” with another variable. I can also opt to finding its range or looking for its (reactive) pair.
Using the techniques
It’s a great way to collaborate
When working in a group, each person has a different view and a different degree of knowledge about the problem. Using these techniques with a whiteboard, or sitting in a circle and talking through thought experiments, forces conversation to small meaningful parts and drives convergence quite naturally. Group ignorance is revealed safely, and shared understanding is the outcome.
Validate the mess early
Because the less messy parts that are actually useful are revealed. Never forget, though, that it is still a messy model and needs validation. Find a way to test these less messy parts. You may model it in a spreadsheet, throw data at it, write some code. Pause, find the cheapest way to validate, and come back for more. Remember that it is a mess and there is still a lot to do.
Focus on learning, not the backlog
It is easy to get carried away and drift focus to building a backlog of work as the primary goal. A backlog derived from a mess is not valuable. The objective is to learn more, not build more. The more we learn, the greater the chance that we will build the most useful aspects. This is not about ignoring deadlines. Instead, we are aiming for highest impact in each time box. That impact comes from making the mess less. Validating early, collaborating consistently helps keep focus.
The mess creates a virtuous cycle when I allow myself to acknowledge the mess, find use and value in the mess, validate the less messy useful parts early. I keep forward momentum with awareness of my ignorance. My messy models are still a lot better than no model.