summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Kerr <dwmkerr@gmail.com>2018-10-04 23:35:51 +0800
committerDave Kerr <dwmkerr@gmail.com>2018-10-04 23:35:51 +0800
commitb609c9c2662903f615ad6753e75b7f2fefe38a7c (patch)
tree6c9021bc69d76388b859987352f8c34db92acfa6
parent839b51ce767d3e485c47a3bd27e9caf719bcb318 (diff)
feat: added tesler's law
-rw-r--r--README.md11
1 files changed, 11 insertions, 0 deletions
diff --git a/README.md b/README.md
index c4e9eca..122b115 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,7 @@ Laws, Theories, Patterns and Ideas that all developers should know about!
* [The Laws](#the-laws)
* [⭐⭐ Conway's Law](#-conways-law)
* [⭐ Hofstadter's Law](#-hofstadters-law)
+ * [⭐⭐ The Law of Conservation of Complexity (Tessler's Law)](#-the-law-of-conservation-of-complexity-tesslers-law)
* [⭐⭐⭐ The Unix Philosophy](#-the-unix-philosophy)
* [⭐The Spotify Model](#the-spotify-model)
@@ -41,6 +42,16 @@ See also: 'The Spotify Model'.
You might hear this law referred to when looking at estimates for how long something will take. It seems a truism in software development that we tend to not be very good at accurately estimating how long something will take to deliver.
+### ⭐⭐ The Law of Conservation of Complexity (Tessler's Law)
+
+[The Law of Conservation of Complexity on Wikipedia](https://en.wikipedia.org/wiki/Law_of_conservation_of_complexity)
+
+This law states that there is a certain amount of complexity in a system which cannot be eliminated - it is intrinsic.
+
+One way to think of this is that there is a certain amount of inherent complexity. You can 'move it around', by restructuring code, but you cannot eliminate it. One interesting angle is that even by making the overall system less complex, you potentially just shift the eliminated complexity _to the user_ - forcing them to behave in a more complex way.
+
+Another way to think of the law is this. Some complexity in a system is 'inadvertent'. It is complexity because something is poorly structured, obtuse, or doesn't effectively model a certain problem well. This can be reduced (or eliminated). However, some complexity is 'intrinsic' - is is a consequence of the complexity of the problem being solved. This complexity can be moved, but not eliminated.
+
### ⭐⭐⭐ The Unix Philosophy
[The Unix Philosophy on Wikipedia](https://en.wikipedia.org/wiki/Unix_philosophy)