Better Programming

Advice for programmers.

Follow publication

Member-only story

Simple vs. Complicated vs. Complex vs. Chaotic

Michael Bykovski
Better Programming
Published in
5 min readMar 3, 2020

--

Photo by Brannon Naito on Unsplash.
  • “The task is simple.”
  • “This calculation is complex.”
  • “Software projects are complicated.”
  • “The team is chaotic!”

Have you ever heard one of these phrases? Did you know that every single one is wrong?

When we talk about the terms simple, complicated, complex, and chaotic, we’re referring to complexity classes in systems.

Complexity classes in systems describe the known or unknown knowns and unknowns in a system. This is important when one wants to learn or understand a system.

Each complexity class is isolated from another one and a system can be assigned to only one of these classes.

+------------------+-------+---------+--------+----------+
| Complexity Class | Known | Unknown | Knowns | Unknowns |
+------------------+-------+---------+--------+----------+
| Simple | ✓ | x | ✓ | x |
| Complicated | ✓ | x | ✓ | ✓ |
| Complex | x | ✓ | ✓ | x |
| Chaotic | x | ✓ | x | ✓ |
+------------------+-------+---------+--------+----------+

Known, Unknown, Knowns, and Unknowns

What are known, knowns, unknown, and unknowns in a system?

To be honest, this topic is a little bit abstract and maybe hard to understand. But let me try to explain it to you. Let’s look at this table first:

+---------+----------------+------------------+
| | Knowns | Unknowns |
+---------+----------------+------------------+
| known | known Knowns | known Unknowns |
+---------+----------------+------------------+
| unknown | unknown Knowns | unknown Unknowns |
+---------+----------------+------------------+

This matrix shows all the possibilities of known, unknown, knowns, and unknowns.

Donald Rumsfeld once said:

“[T]here are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know…

--

--

Michael Bykovski
Michael Bykovski

Written by Michael Bykovski

I am a full-stack developer at CompuTerra GmbH in Germany. Interested in decenralized networks, machine learning and just casual server-client applications.

No responses yet

Write a response