From b609c9c2662903f615ad6753e75b7f2fefe38a7c Mon Sep 17 00:00:00 2001 From: Dave Kerr Date: Thu, 4 Oct 2018 23:35:51 +0800 Subject: [PATCH 1/2] feat: added tesler's law --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) 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) From ecf4d44aa920308a89013169ac6005e14c9ed791 Mon Sep 17 00:00:00 2001 From: Dave Kerr Date: Thu, 4 Oct 2018 23:43:14 +0800 Subject: [PATCH 2/2] chore: clean up tesler's law wording --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 122b115..2ff38f4 100644 --- a/README.md +++ b/README.md @@ -46,11 +46,11 @@ You might hear this law referred to when looking at estimates for how long somet [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. +This law states that there is a certain amount of complexity in a system which cannot be reduced. -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. +Some complexity in a system is 'inadvertent'. It is a consequence of poor structure, mistakes, or just bad modeling of a problem to solve. Inadvertent complexity can be reduced (or eliminated). However, some complexity is 'intrinsic' - is is a consequence of the complexity inherent in the problem being solved. This complexity can be moved, but not eliminated. -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. +One interesting element to this law is the suggestion that even by simplifying the entire system, the intrinsic complexity is not reduced, it is _moved to the user_, who must behave in a more complex way. ### ⭐⭐⭐ The Unix Philosophy