Thinking about extremes

I’m reading The Socratic Method: A Practitioner’s Handbook , based on a recommendation by Rich Hickey on his talk Design in Practice .

At some point the book mentions the elenchus, a method used by Socrates to test the consistency of a claim or argument by finding another claim that is also agreed to be true, but ends up contradicting the first claim.

The book briefly mentions that you can use the elenchus to test your own beliefs to the extremes, but doesn’t go further into this. I don’t know whether the book will eventually discuss this in more depth 1 , so this post is a note on “testing beliefs to the extremes”.

Whenever thinking about a subject or argument, I find it to be useful to push the subject or argument to each of its extremes. This allows me to identify the “bounds” of the space I’m thinking about, helps me situate my own belief about the subject in this space, and most of all helps avoid duality 2 in my thoughts.

An example which is unfortunately technical because I can’t think of a better one right now: imagine you want to build a system of computers to do some work you find useful. However, the solution you thought about will require some coordination between the machines, which is proving to be an obstacle to implementing the solution.

The first step is to recognise that the issue is about coordination rather than “which database do we use that will scale to multiple machines connecting to it”, or whatever other problem comes from your particular solution for the system. This method doesn’t help with this first step. I apologise if this feels like “draw the rest of the fucking owl” to you.

After the first step, this method can be applied to let you explore the space of solutions, and maybe even come up with a better solution. For example, let’s force no coordination whatsoever between the computers. How does a system like this work? By forcing this rule and thinking about it, we begin to solve a puzzle and come up with ideas. Perhaps load balancing comes up as the solution, and it will obviously have its drawbacks, and from there we start to think about ways we can make it work better 3 .

Similarly, let’s think about another extreme: force a single source of truth, and say that a single computer will be responsible for coordinating work among other computers. How does a system like this work? As we think about it, we’ll find drawbacks for this solution as well (e.g. if the coordinator machine stops working, the system will stop until a new coordinator exists), and think about solutions for those drawbacks.

It is natural that as we think about the implications of each extreme, we’ll be pulled towards the other end to solve the drawbacks. This is one of the benefits of doing this exercise: gaining a better understanding of where each solution fits within the space of solutions. The implication of this is that we’ll be able to situate our own solution into this space, and might even be surprised at how easier it is to explore alternative solutions which end up stronger than the one we started with.

Obviously, this can also be done for things that don’t have only 2 extremes. In fact, most of them will have multiple extremes, and the more we identify, the harder it is to think about, at which point I’d suggest you watch the Rich Hickey talk I mentioned at the beginning of this post :)

Footnotes

  1. Update from 2024-05-10: It does a little bit! See this post .

  2. I won’t develop this further because I’d like to write an entire blog post about this subject. If/when I do so, I’ll try to remember to link to it from here!

  3. You should read this if you’re curious about this particular problem.