The Knowns, The Unknowns, and Engineering

In an earlier post, I described a way of making decisions based on the type of problems that you are facing. I won’t repeat it — go read the original post — but the key point is that the way you go about making decisions really should depend on the type of situation you’re in.
/via https://www.thingsinsquares.com/comics/google-maps/
Think about directions to get somewhere. If you’ve never been there before, well, Google Maps to the rescue. But what if data service is sucky (it happens sometimes!)? Do you ask for directions? What if there is nobody to ask, d’you explore? Or go back and print out directions at home?
So yeah, the specifics of the situation affect the way you go about resolving them. And to get slightly Rumsfeldian, most situations can be broken out into the following four categories
  1. 1. Known Knowns: You’ve solved this specific problem before, and can totally do it again. Heck, you can automate the solution, or if it is a manual thing, probably write out a script that somebody at a help-desk can follow.
    (In Cynefin, this is the realm of Obvious)
  2. 2. Known Unknowns: A generalization of the Known Knowns problems. You haven’t hit upon this very specific problem before, but you’ve hit other problems that are kinda like it, and with a little bit of elbow-grease you can figure out a solution.
    (In Cynefin, this is the realm of Complicated)
  3. 3. Unknown Knowns: These are problems that can’t be solved as far as you know. Think of computationally irreducible problems and the like, where you, literally, don’t know if it is impossible. I mean, stuff like “Decrypt this text when you don’t know the secret” might be doable with quantum whatnot in the future, but right now, well, you’re out of luck (unless you’re the NSA?)
    (In Cynefin, this is the realm of Complex and/or Chaotic)
  4. 4. Unknown Unknowns: This is the realm of total ignorance, where you don’t even know what you don’t know. And yes, it’s a bit of a metaphysical statement, given that the universe of things that are unknowable is, itself, unknowable.
    (In Cynefin, this is the realm of Disorder)
The underlying issue — the meta-problem as it were — is that there is a bit of a human trait to look at -3- (Unknown Knowns), and think that it is -2- (Known Unknowns). Or, to put it differently, people look at a problem and say to themselves “A-HA! I’ve seen this before! I can deal with this!” when in reality, it is may not be solvable at all!
I am reminded of a #CowboyDeveloper I once knew, who was convinced, convinced, that the FLP result was wrong. He had this crazy Rube-Goldberg system (Queues and Messages and State oh my!) that he was convinced would — if he could just get rid of that one corner case! — solve the problem.
The thing is, the math didn’t matter. His entire life’s experience was telling him that this was just like this other stuff that he had done in the past.
And that, my friends, is the difference between Good Engineering and Bad — the ability to distinguish between the Achievable and the Impossible.
Don’t be that #CowboyDeveloperDon’t go down those rabbit-holes!

Comments

Popular posts from this blog

Erlang, Binaries, and Garbage Collection (Sigh)

Cannonball Tree!

Visualizing Prime Numbers