Merge branch 'staging' into patch-1

This commit is contained in:
Dave Kerr
2025-02-26 12:05:00 +00:00
committed by GitHub
6 changed files with 237 additions and 175 deletions

View File

@@ -36,7 +36,7 @@ jobs:
name: hacker-laws.pdf name: hacker-laws.pdf
path: hacker-laws.pdf path: hacker-laws.pdf
- name: Publish Intermiediate Markdown Artifact - name: Publish Intermediate Markdown Artifact
uses: actions/upload-artifact@master uses: actions/upload-artifact@master
with: with:
name: hacker-laws.md name: hacker-laws.md

218
README.md
View File

@@ -10,75 +10,79 @@ Like this project? Please considering [sponsoring me](https://github.com/sponsor
<!-- vim-markdown-toc GFM --> <!-- vim-markdown-toc GFM -->
* [Introduction](#introduction) - [Introduction](#introduction)
* [Laws](#laws) - [Laws](#laws)
* [9091 Principle (1% Rule)](#9091-principle-1-rule) - [9091 Principle (1% Rule)](#9091-principle-1-rule)
* [NinetyNinety Rule](#ninetyninety-rule) - [Amdahl's Law](#amdahls-law)
* [Amdahl's Law](#amdahls-law) - [The Broken Windows Theory](#the-broken-windows-theory)
* [The Broken Windows Theory](#the-broken-windows-theory) - [Brooks' Law](#brooks-law)
* [Brooks' Law](#brooks-law) - [CAP Theorem (Brewer's Theorem)](#cap-theorem-brewers-theorem)
* [CAP Theorem (Brewer's Theorem)](#cap-theorem-brewers-theorem) - [Clarke's three laws](#clarkes-three-laws)
* [Conway's Law](#conways-law) - [Conway's Law](#conways-law)
* [Cunningham's Law](#cunninghams-law) - [Cunningham's Law](#cunninghams-law)
* [Dunbar's Number](#dunbars-number) - [Dunbar's Number](#dunbars-number)
* [The Dunning-Kruger Effect](#the-dunning-kruger-effect) - [The Dunning-Kruger Effect](#the-dunning-kruger-effect)
* [Fitts' Law](#fitts-law) - [Fitts' Law](#fitts-law)
* [Gall's Law](#galls-law) - [Gall's Law](#galls-law)
* [Goodhart's Law](#goodharts-law) - [Goodhart's Law](#goodharts-law)
* [Hanlon's Razor](#hanlons-razor) - [Hanlon's Razor](#hanlons-razor)
* [Hick's Law (Hick-Hyman Law)](#hicks-law-hick-hyman-law) - [Hick's Law (Hick-Hyman Law)](#hicks-law-hick-hyman-law)
* [Hofstadter's Law](#hofstadters-law) - [Hofstadter's Law](#hofstadters-law)
* [Hutber's Law](#hutbers-law) - [Hutber's Law](#hutbers-law)
* [The Hype Cycle & Amara's Law](#the-hype-cycle--amaras-law) - [The Hype Cycle & Amara's Law](#the-hype-cycle--amaras-law)
* [Hyrum's Law (The Law of Implicit Interfaces)](#hyrums-law-the-law-of-implicit-interfaces) - [Hyrum's Law (The Law of Implicit Interfaces)](#hyrums-law-the-law-of-implicit-interfaces)
* [Kernighan's Law](#kernighans-law) - [Input-Process-Output (IPO)](#input-process-output-ipo)
* [Linus's Law](#linuss-law) - [Kernighan's Law](#kernighans-law)
* [Metcalfe's Law](#metcalfes-law) - [Linus's Law](#linuss-law)
* [Moore's Law](#moores-law) - [Metcalfe's Law](#metcalfes-law)
* [Murphy's Law / Sod's Law](#murphys-law--sods-law) - [Moore's Law](#moores-law)
* [Occam's Razor](#occams-razor) - [Murphy's Law / Sod's Law](#murphys-law--sods-law)
* [Parkinson's Law](#parkinsons-law) - [Occam's Razor](#occams-razor)
* [Premature Optimization Effect](#premature-optimization-effect) - [Parkinson's Law](#parkinsons-law)
* [Putt's Law](#putts-law) - [Premature Optimization Effect](#premature-optimization-effect)
* [Reed's Law](#reeds-law) - [Putt's Law](#putts-law)
* [The Law of Conservation of Complexity (Tesler's Law)](#the-law-of-conservation-of-complexity-teslers-law) - [Reed's Law](#reeds-law)
* [The Law of Demeter](#the-law-of-demeter) - [The Ringelmann Effect](#the-ringelmann-effect)
* [The Law of Leaky Abstractions](#the-law-of-leaky-abstractions) - [The Law of Conservation of Complexity (Tesler's Law)](#the-law-of-conservation-of-complexity-teslers-law)
* [The Law of the Instrument](#the-law-of-the-instrument) - [The Law of Demeter](#the-law-of-demeter)
* [The Law of Triviality](#the-law-of-triviality) - [The Law of Leaky Abstractions](#the-law-of-leaky-abstractions)
* [The Unix Philosophy](#the-unix-philosophy) - [The Law of the Instrument](#the-law-of-the-instrument)
* [The Scout Rule](#the-scout-rule) - [The Law of Triviality](#the-law-of-triviality)
* [The Spotify Model](#the-spotify-model) - [The Unix Philosophy](#the-unix-philosophy)
* [The Two Pizza Rule](#the-two-pizza-rule) - [The Scout Rule](#the-scout-rule)
* [Wadler's Law](#wadlers-law) - [The Spotify Model](#the-spotify-model)
* [Wheaton's Law](#wheatons-law) - [The Two Pizza Rule](#the-two-pizza-rule)
* [Principles](#principles) - [Twyman's law](#twymans-law)
* [All Models Are Wrong (George Box's Law)](#all-models-are-wrong-george-boxs-law) - [Wadler's Law](#wadlers-law)
* [Chesterton's Fence](#chestertons-fence) - [Wheaton's Law](#wheatons-law)
* [The Dead Sea Effect](#the-dead-sea-effect) - [Principles](#principles)
* [The Dilbert Principle](#the-dilbert-principle) - [All Models Are Wrong (George Box's Law)](#all-models-are-wrong-george-boxs-law)
* [The Pareto Principle (The 80/20 Rule)](#the-pareto-principle-the-8020-rule) - [Chesterton's Fence](#chestertons-fence)
* [The Shirky Principle](#the-shirky-principle) - [The Dead Sea Effect](#the-dead-sea-effect)
* [The Peter Principle](#the-peter-principle) - [The Dilbert Principle](#the-dilbert-principle)
* [The Robustness Principle (Postel's Law)](#the-robustness-principle-postels-law) - [The Pareto Principle (The 80/20 Rule)](#the-pareto-principle-the-8020-rule)
* [SOLID](#solid) - [The Shirky Principle](#the-shirky-principle)
* [The Single Responsibility Principle](#the-single-responsibility-principle) - [The Peter Principle](#the-peter-principle)
* [The Open/Closed Principle](#the-openclosed-principle) - [The Robustness Principle (Postel's Law)](#the-robustness-principle-postels-law)
* [The Liskov Substitution Principle](#the-liskov-substitution-principle) - [SOLID](#solid)
* [The Interface Segregation Principle](#the-interface-segregation-principle) - [The Single Responsibility Principle](#the-single-responsibility-principle)
* [The Dependency Inversion Principle](#the-dependency-inversion-principle) - [The Open/Closed Principle](#the-openclosed-principle)
* [The DRY Principle](#the-dry-principle) - [The Liskov Substitution Principle](#the-liskov-substitution-principle)
* [The KISS principle](#the-kiss-principle) - [The Interface Segregation Principle](#the-interface-segregation-principle)
* [YAGNI](#yagni) - [The Dependency Inversion Principle](#the-dependency-inversion-principle)
* [The Fallacies of Distributed Computing](#the-fallacies-of-distributed-computing) - [The DRY Principle](#the-dry-principle)
* [Reading List](#reading-list) - [The KISS principle](#the-kiss-principle)
* [Online Resources](#online-resources) - [YAGNI](#yagni)
* [PDF eBook](#pdf-ebook) - [The Fallacies of Distributed Computing](#the-fallacies-of-distributed-computing)
* [Podcast](#podcast) - [The Principle of Least Astonishment](#the-principle-of-least-astonishment)
* [Translations](#translations) - [Reading List](#reading-list)
* [Related Projects](#related-projects) - [Online Resources](#online-resources)
* [Contributing](#contributing) - [PDF eBook](#pdf-ebook)
* [TODO](#todo) - [Podcast](#podcast)
- [Translations](#translations)
- [Related Projects](#related-projects)
- [Contributing](#contributing)
- [TODO](#todo)
<!-- vim-markdown-toc --> <!-- vim-markdown-toc -->
@@ -197,6 +201,18 @@ See also:
- [The Fallacies of Distributed Computing](#the-fallacies-of-distributed-computing) - [The Fallacies of Distributed Computing](#the-fallacies-of-distributed-computing)
- [PACELC](#TODO) - [PACELC](#TODO)
### Clarke's three laws
[Clarke's three laws on Wikipedia](https://en.wikipedia.org/wiki/Clarke's_three_laws)
Arthur C. Clarke, an british science fiction writer, formulated three adages that are known as Clarke's three laws. The third law is the best known and most widely cited.
These so-called laws are:
- When a distinguished but elderly scientist states that something is possible, they are almost certainly right. When they state that something is impossible, they are very probably wrong.
- The only way of discovering the limits of the possible is to venture a little way past them into the impossible.
- Any sufficiently advanced technology is indistinguishable from magic.
### Conway's Law ### Conway's Law
[Conway's Law on Wikipedia](https://en.wikipedia.org/wiki/Conway%27s_law) [Conway's Law on Wikipedia](https://en.wikipedia.org/wiki/Conway%27s_law)
@@ -403,6 +419,24 @@ See also:
- [The Law of Leaky Abstractions](#the-law-of-leaky-abstractions) - [The Law of Leaky Abstractions](#the-law-of-leaky-abstractions)
- [XKCD 1172](https://xkcd.com/1172/) - [XKCD 1172](https://xkcd.com/1172/)
### Input-Process-Output (IPO)
[InputProcessOutput on Wikipedia](https://en.wikipedia.org/wiki/IPO_model)
Systems can be incredibly complex, but can typically be broken down into smaller parts that follow a simple pattern:
1. Input is provided
2. Some kind of processing or transformation is performed
3. Output is returned
A sort function in a programming language or system could be a classic example of the IPO pattern; where arbitrary input is sorted based on a predicate and returned back. A web server could be modelled as an IPO system, where HTTP requests are transformed into HTTP responses. A highly complex Generative AI system could likewise be modelled in this way, with user input being passed through a complex model and a response being generated.
The IPO pattern is present in different forms across almost all technological domains, from [functional programming](https://en.wikipedia.org/wiki/Functional_programming) languages that explicitly follow IPO patterns to [The Unix Philosophy](#the-unix-philosophy), which suggests that highly complex systems can be built by chaining together many simple IPO programs.
See also:
- [The Unix Philosophy](#the-unix-philosophy)
### Kernighan's Law ### Kernighan's Law
> Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. > Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.
@@ -513,7 +547,7 @@ See also:
### Premature Optimization Effect ### Premature Optimization Effect
[Premature Optimization on WikiWikiWeb](http://wiki.c2.com/?PrematureOptimization) [Premature Optimization on WikiWeb](http://wiki.c2.com/?PrematureOptimization)
> Premature optimization is the root of all evil. > Premature optimization is the root of all evil.
> >
@@ -554,6 +588,15 @@ See also:
- [Metcalfe's Law](#metcalfes-law) - [Metcalfe's Law](#metcalfes-law)
- [Dunbar's Number](#dunbars-number) - [Dunbar's Number](#dunbars-number)
### The Ringelmann Effect
[The Ringelmann effect on Wikipedia](https://en.wikipedia.org/wiki/Ringelmann_effect)
The Ringelmann Effect is the tendency of an individual to become increasingly inefficient as more and more people are involved in a task. In other words, as more individuals are added to a team, the more the average individual performance decreases. Multiple causes are believed to be at work, including loss of motivation ("[social loafing](https://en.wikipedia.org/wiki/Social_loafing)") and challenges related to coordination.
See also:
- [Brooks' Law](#brooks-law)
### The Law of Conservation of Complexity (Tesler's Law) ### The Law of Conservation of Complexity (Tesler's Law)
[The Law of Conservation of Complexity on Wikipedia](https://en.wikipedia.org/wiki/Law_of_conservation_of_complexity) [The Law of Conservation of Complexity on Wikipedia](https://en.wikipedia.org/wiki/Law_of_conservation_of_complexity)
@@ -679,6 +722,18 @@ The number of links between people can be expressed as `n(n-1)/2` where n = numb
<img width="200px" alt="Complete graph; Links between people" src="./images/complete_graph.png" /> <img width="200px" alt="Complete graph; Links between people" src="./images/complete_graph.png" />
### Twyman's law
[Twyman's Law on Wikipedia](https://en.wikipedia.org/wiki/Twyman%27s_law)
> The more unusual or interesting the data, the more likely they are to have been the result of an error of one kind or another.
This law suggests that when there are particularly unusual data points, it is more likely that they are the result of errors or manipulation. For example, if a dataset of long-jump results from a sporting event showed a maximum value of 20 meters (more than twice the world record), it is more likely to be due to an error (such as recording a value in feet rather than meters) than due to an unusually long jump. It is also more likely in this case that the results could have been manipulated.
See also:
- [Sagan Standard](#TODO)
### Wadler's Law ### Wadler's Law
[Wadler's Law on wiki.haskell.org](https://wiki.haskell.org/Wadler's_Law) [Wadler's Law on wiki.haskell.org](https://wiki.haskell.org/Wadler's_Law)
@@ -841,7 +896,6 @@ See Also:
- [Hyrum's Law](#hyrums-law-the-law-of-implicit-interfaces) - [Hyrum's Law](#hyrums-law-the-law-of-implicit-interfaces)
### SOLID ### SOLID
This is an acronym, which refers to: This is an acronym, which refers to:
@@ -947,7 +1001,7 @@ See also:
> Every piece of knowledge must have a single, unambiguous, authoritative representation within a system. > Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.
DRY is an acronym for _Don't Repeat Yourself_. This principle aims to help developers reducing the repetition of code and keep the information in a single place and was cited in 1999 by Andrew Hunt and Dave Thomas in the book [The Pragmatic Developer](https://en.wikipedia.org/wiki/The_Pragmatic_Programmer) DRY is an acronym for _Don't Repeat Yourself_. This principle aims to help developers reducing the repetition of code and keep the information in a single place and was cited in 1999 by Andrew Hunt and Dave Thomas in the book [The Pragmatic Programmer](https://en.wikipedia.org/wiki/The_Pragmatic_Programmer)
> The opposite of DRY would be _WET_ (Write Everything Twice or We Enjoy Typing). > The opposite of DRY would be _WET_ (Write Everything Twice or We Enjoy Typing).
@@ -955,7 +1009,7 @@ In practice, if you have the same piece of information in two (or more) differen
See also: See also:
- [The Pragmatic Developer](https://en.wikipedia.org/wiki/The_Pragmatic_Programmer) - [The Pragmatic Programmer](https://en.wikipedia.org/wiki/The_Pragmatic_Programmer)
### The KISS principle ### The KISS principle
@@ -1015,6 +1069,22 @@ See also:
- [Foraging for the Fallacies of Distributed Computing (Part 1) - Vaidehi Joshi - [Foraging for the Fallacies of Distributed Computing (Part 1) - Vaidehi Joshi
on Medium](https://medium.com/baseds/foraging-for-the-fallacies-of-distributed-computing-part-1-1b35c3b85b53) on Medium](https://medium.com/baseds/foraging-for-the-fallacies-of-distributed-computing-part-1-1b35c3b85b53)
### The Principle of Least Astonishment
[The Principle of Least Astonishment on Wikipedia](https://en.wikipedia.org/wiki/Principle_of_least_astonishment)
> People are part of the system. The design should match the user's experience, expectations, and mental models.
>
> Frans Kaashoek
This principle proposes that systems and interfaces should be designed in a way that features and functionality is easily discovered and matches users expectations. Features that 'surprise' users should be discouraged in favour of features that can be intuitively reasoned about based on existing patterns and practices.
Many examples are present in user interfaces, such as a 'pull down' gesture on a mobile appliation to refresh content. Another example would be command line tools, where many standards exist for how parameters are named, common parameters that should be available and so on.
See also:
- [Convention Over Configuration](#todo)
## Reading List ## Reading List
If you have found these concepts interesting, you may enjoy the following books. If you have found these concepts interesting, you may enjoy the following books.
@@ -1052,6 +1122,7 @@ Thanks to a number of wonderful contributors, Hacker Laws is available in a numb
| Language | Moderator | Status | | Language | Moderator | Status |
|----------|-----------|--------| |----------|-----------|--------|
| [AR Arabic / Arabic](./translations/ar-AR.md) | [Abdurrahman Rajab - a0m0rajab](https://github.com/a0m0rajab) | . |
| [🇮🇩 Bahasa Indonesia / Indonesian](./translations/pt-BR.md) | [arywidiantara](https://github.com/arywidiantara) | [![gitlocalized ](https://gitlocalize.com/repo/2513/id/badge.svg)](https://gitlocalize.com/repo/2513/id?utm_source=badge) | | [🇮🇩 Bahasa Indonesia / Indonesian](./translations/pt-BR.md) | [arywidiantara](https://github.com/arywidiantara) | [![gitlocalized ](https://gitlocalize.com/repo/2513/id/badge.svg)](https://gitlocalize.com/repo/2513/id?utm_source=badge) |
| [🇧🇷 Brasileiro / Brazilian](./translations/pt-BR.md) | [Eugênio Moreira](https://github.com/eugenioamn), [Leonardo Costa](https://github.com/leofc97) | [![gitlocalized ](https://gitlocalize.com/repo/2513/pt-BR/badge.svg)](https://gitlocalize.com/repo/2513/pt-BR?utm_source=badge) | | [🇧🇷 Brasileiro / Brazilian](./translations/pt-BR.md) | [Eugênio Moreira](https://github.com/eugenioamn), [Leonardo Costa](https://github.com/leofc97) | [![gitlocalized ](https://gitlocalize.com/repo/2513/pt-BR/badge.svg)](https://gitlocalize.com/repo/2513/pt-BR?utm_source=badge) |
| [🇨🇳 中文 / Chinese](https://github.com/nusr/hacker-laws-zh) | [Steve Xu](https://github.com/nusr) | Partially complete | | [🇨🇳 中文 / Chinese](https://github.com/nusr/hacker-laws-zh) | [Steve Xu](https://github.com/nusr) | Partially complete |
@@ -1062,6 +1133,7 @@ Thanks to a number of wonderful contributors, Hacker Laws is available in a numb
| [🇯🇵 JP 日本語 / Japanese](./translations/jp.md) | [Fumikazu Fujiwara](https://github.com/freddiefujiwara)| [![gitlocalized ](https://gitlocalize.com/repo/2513/ja/badge.svg)](https://gitlocalize.com/repo/2513/ja?utm_source=badge) | | [🇯🇵 JP 日本語 / Japanese](./translations/jp.md) | [Fumikazu Fujiwara](https://github.com/freddiefujiwara)| [![gitlocalized ](https://gitlocalize.com/repo/2513/ja/badge.svg)](https://gitlocalize.com/repo/2513/ja?utm_source=badge) |
| [🇰🇷 한국어 / Korean](https://github.com/codeanddonuts/hacker-laws-kr) | [Doughnut](https://github.com/codeanddonuts) | Partially complete | | [🇰🇷 한국어 / Korean](https://github.com/codeanddonuts/hacker-laws-kr) | [Doughnut](https://github.com/codeanddonuts) | Partially complete |
| [🇱🇻 Latviešu Valoda / Latvian](./translations/lv.md) | [Arturs Jansons](https://github.com/iegik) | [![gitlocalized ](https://gitlocalize.com/repo/2513/lv/badge.svg)](https://gitlocalize.com/repo/2513/lv?utm_source=badge) | | [🇱🇻 Latviešu Valoda / Latvian](./translations/lv.md) | [Arturs Jansons](https://github.com/iegik) | [![gitlocalized ](https://gitlocalize.com/repo/2513/lv/badge.svg)](https://gitlocalize.com/repo/2513/lv?utm_source=badge) |
| [🇮🇷 فارسی / Persian](./translations/fa.md) | [MohammadErfan Gooneh](https://github.com/MEgooneh) | . |
| [🇵🇱 Polski / Polish](./translations/pl.md) | [Mariusz Kogen](https://github.com/k0gen) | [![gitlocalized ](https://gitlocalize.com/repo/2513/pl/badge.svg)](https://gitlocalize.com/repo/2513/pl?utm_source=badge) | | [🇵🇱 Polski / Polish](./translations/pl.md) | [Mariusz Kogen](https://github.com/k0gen) | [![gitlocalized ](https://gitlocalize.com/repo/2513/pl/badge.svg)](https://gitlocalize.com/repo/2513/pl?utm_source=badge) |
| [🇷🇺 Русская версия / Russian](https://github.com/solarrust/hacker-laws) | [Alena Batitskaya](https://github.com/solarrust) | Partially complete | | [🇷🇺 Русская версия / Russian](https://github.com/solarrust/hacker-laws) | [Alena Batitskaya](https://github.com/solarrust) | Partially complete |
| [🇪🇸 Castellano / Spanish](./translations/es-ES.md) | [Manuel Rubio](https://github.com/manuel-rubio) ([Sponsor](https://github.com/sponsors/manuel-rubio)) | Partially complete | | [🇪🇸 Castellano / Spanish](./translations/es-ES.md) | [Manuel Rubio](https://github.com/manuel-rubio) ([Sponsor](https://github.com/sponsors/manuel-rubio)) | Partially complete |

View File

@@ -1,42 +1,32 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# This script prepares a `hacker-laws.md` file which is in a format ready to be # This script prepares a `hacker-laws.md` file for export to PDF or e-book format.
# exported to PDF or other formats for an e-book.
# Require that we provide the version number and get a date. # Require a version number and get the current date.
version=$1 version=$1
date=$(date "+%Y-%m-%d") date=$(date "+%Y-%m-%d")
if [ -z $version ]; then if [ -z "$version" ]; then
echo "version must be specified: ./prepare-markdown-for-ebook.sh <version>" echo "Usage: $0 <version>"
exit 1 exit 1
fi fi
# Create the frontmatter. # Create `hacker-laws.md` with frontmatter and README content in one step.
cat << EOF > frontmatter.md cat << EOF > hacker-laws.md
--- ---
title: "Hacker Laws" title: "Hacker Laws"
author: "Dave Kerr, github.com/dwmkerr/hacker-laws" author: "Dave Kerr, github.com/dwmkerr/hacker-laws"
subtitle: "Laws, Theories, Principles and Patterns that developers will find useful. ${version}, ${date}." subtitle: "Laws, Theories, Principles, and Patterns that developers will find useful. ${version}, ${date}."
--- ---
EOF EOF
cat README.md >> hacker-laws.md
# Combine the frontmatter and the laws. # Use a single `sed` command to clean up unwanted lines and emojis in one pass.
cat frontmatter.md README.md >> hacker-laws.md sed -i'' -e '/💻📖.*/d' \
-e 's/❗/Warning/g' \
-e '/^\[Translations.*/d' \
-e '/\*.*/d' \
-e '/ \*.*/d' \
-e '/## Translations/,$d' hacker-laws.md
# Remove the title - we have it in the front-matter of the doc, so it will echo "hacker-laws.md prepared successfully."
# automatically be added to the PDF.
sed -i'' '/💻📖.*/d' hacker-laws.md
# We can't have emojis in the final content with the PDF generator we're using.
sed -i'' 's/❗/Warning/' hacker-laws.md
# Now rip out the translations line.
sed -i'' '/^\[Translations.*/d' hacker-laws.md
# # Now rip out any table of contents items.
sed -i'' '/\*.*/d' hacker-laws.md
sed -i'' '/ \*.*/d' hacker-laws.md
# Delete everything from 'Translations' onwards (we don't need the translations
# lists, related projects, etc).
sed -i'' '/## Translations/,$d' hacker-laws.md

View File

@@ -499,7 +499,7 @@ Les principes sont généralement des lignes directrices liés à la conception.
> Les entreprises tendent à promouvoir systématiquement les employés incompétents afin de les sortir du workflow. > Les entreprises tendent à promouvoir systématiquement les employés incompétents afin de les sortir du workflow.
> *Scott Adams* > *Scott Adams*
Un concept de gestion inventé par Scott Adams (créateur du comic strip Dilbert) inspiré par le [principe de Peter](#principe-de-peter). Suivant le principe de Dilbert, les employés qui n'ont jamais montré de compétence dans leur travail sont promus à des postes de management afin de limité les dommages qu'ils peuvent causer. Adams expliqua initialement le principe dans un article du Wall Street Journal datant de 1995, et élabora le concept dans son livre de 1996: [The Dilbert Principle](#a-lire). Un concept de gestion inventé par Scott Adams (créateur du comic strip Dilbert) inspiré par le [principe de Peter](#principe-de-peter). Suivant le principe de Dilbert, les employés qui n'ont jamais montré de compétence dans leur travail sont promus à des postes de management afin de limiter les dommages qu'ils peuvent causer. Adams expliqua initialement le principe dans un article du Wall Street Journal datant de 1995, et élabora le concept dans son livre de 1996: [The Dilbert Principle](#a-lire).
Voir aussi : Voir aussi :

View File

@@ -10,73 +10,73 @@ Podoba Ci się ten projekt? Proszę rozważyć [sponsorowanie mnie](https://gith
<!-- vim-markdown-toc GFM --> <!-- vim-markdown-toc GFM -->
- [Wstęp](#introduction) - [Wstęp](#wstęp)
- [Prawa](#laws) - [Prawa](#prawa)
- [Zasada 90-9-1 (zasada 1%)](#zasada-90-9-1-zasada-1) - [Zasada 90-9-1 (zasada 1%)](#zasada-90-9-1-zasada-1)
- [Prawo Amdahla](#amdahls-law) - [Prawo Amdahla](#prawo-amdahla)
- [Teoria zepsutych okien](#the-broken-windows-theory) - [Teoria zepsutych okien](#teoria-zepsutych-okien)
- [Prawo Brooksa](#brooks-law) - [Prawo Brooksa](#prawo-brooksa)
- [Twierdzenie CAP (Twierdzenie Brewera)](#cap-theorem-brewers-theorem) - [Twierdzenie CAP (Twierdzenie Brewera)](#twierdzenie-cap-twierdzenie-brewera)
- [Prawo Conwaya](#conways-law) - [Prawo Conwaya](#prawo-conwaya)
- [Prawo Cunninghama](#cunninghams-law) - [Prawo Cunninghama](#prawo-cunninghama)
- [Numer Dunbara](#dunbars-number) - [Numer Dunbara](#numer-dunbara)
- [Efekt Dunninga-Krugera](#the-dunning-kruger-effect) - [Efekt Dunninga-Krugera](#efekt-dunninga-krugera)
- [Prawo Fittsa](#fitts-law) - [Prawo Fittsa](#prawo-fittsa)
- [Prawo Galla](#galls-law) - [Prawo Galla](#prawo-galla)
- [Prawo Goodharta](#goodharts-law) - [Prawo Goodharta](#prawo-goodharta)
- [Brzytwa Hanlona](#hanlons-razor) - [Brzytwa Hanlona](#brzytwa-hanlona)
- [Prawo Hicka (Prawo Hicka-Hymana)](#hicks-law-hick-hyman-law) - [Prawo Hicka (Prawo Hicka-Hymana)](#prawo-hicka-prawo-hicka-hymana)
- [Prawo Hofstadtera](#hofstadters-law) - [Prawo Hofstadtera](#prawo-hofstadtera)
- [Prawo Hutbera](#hutbers-law) - [Prawo Hutbera](#prawo-hutbera)
- [Cykl szumu i prawo Amary](#the-hype-cycle--amaras-law) - [Cykl szumu i prawo Amary](#cykl-szumu-i-prawo-amary)
- [Prawo Hyruma (prawo niejawnych interfejsów)](#hyrums-law-the-law-of-implicit-interfaces) - [Prawo Hyruma (prawo niejawnych interfejsów)](#prawo-hyruma-prawo-niejawnych-interfejsów)
- [Prawo Kernighana](#kernighans-law) - [Prawo Kernighana](#prawo-kernighana)
- [Prawo Linusa](#linuss-law) - [Prawo Linusa](#prawo-linusa)
- [Prawo Metcalfego](#metcalfes-law) - [Prawo Metcalfego](#prawo-metcalfego)
- [prawo Moore'a](#moores-law) - [prawo Moore'a](#prawo-moorea)
- [Prawo Murphy'ego / Prawo Soda](#murphys-law--sods-law) - [Prawo Murphy'ego / Prawo Soda](#prawo-murphyego--prawo-soda)
- [Brzytwa Ockhama](#occams-razor) - [Brzytwa Ockhama](#brzytwa-ockohama)
- [Prawo Parkinsona](#parkinsons-law) - [Prawo Parkinsona](#prawo-parkinsona)
- [Przedwczesny efekt optymalizacji](#premature-optimization-effect) - [Przedwczesny efekt optymalizacji](#przedwczesny-efekt-optymalizacji)
- [Prawo Putta](#putts-law) - [Prawo Putta](#prawo-putta)
- [Prawo Reeda](#reeds-law) - [Prawo Reeda](#prawo-reeda)
- [Prawo zachowania złożoności (prawo Teslera)](#the-law-of-conservation-of-complexity-teslers-law) - [Prawo zachowania złożoności (prawo Teslera)](#prawo-zachowania-złożoności-prawo-teslera)
- [Prawo Demeter](#the-law-of-demeter) - [Prawo Demeter](#prawo-demeter)
- [Prawo nieszczelnych abstrakcji](#the-law-of-leaky-abstractions) - [Prawo nieszczelnych abstrakcji](#prawo-nieszczelnych-abstrakcji)
- [Prawo trywialności](#the-law-of-triviality) - [Prawo trywialności](#prawo-trywialności)
- [Filozofia Uniksa](#the-unix-philosophy) - [Filozofia Uniksa](#filozofia-uniksa)
- [Zasada Skauta](#the-scout-rule) - [Zasada Skauta](#zasada-skauta)
- [Model Spotify](#the-spotify-model) - [Model Spotify](#model-spotify)
- [Zasada dwóch pizzy](#the-two-pizza-rule) - [Zasada dwóch pizzy](#zasada-dwóch-pizzy)
- [Prawo Wadlera](#wadlers-law) - [Prawo Wadlera](#prawo-wadlera)
- [Prawo Wheatona](#wheatons-law) - [Prawo Wheatona](#prawo-wheatona)
- [Zasady](#principles) - [Zasady](#zasady)
- [Wszystkie modele są błędne (prawo George'a Boxa)](#all-models-are-wrong-george-boxs-law) - [Wszystkie modele są błędne (prawo George'a Boxa)](#wszystkie-modele-są-błędne-prawo-georgea-boxa)
- [Płot Chestertona](#chestertons-fence) - [Płot Chestertona](#płot-chestertona)
- [Efekt Morza Martwego](#the-dead-sea-effect) - [Efekt Morza Martwego](#efekt-morza-martwego)
- [Zasada Dilberta](#the-dilbert-principle) - [Zasada Dilberta](#zasada-dilberta)
- [Zasada Pareto (Zasada 80/20)](#the-pareto-principle-the-8020-rule) - [Zasada Pareto (Zasada 80/20)](#zasada-pareto-zasada-8020)
- [Zasada Shirky](#the-shirky-principle) - [Zasada Shirky](#zasada-shirky)
- [Zasada Piotra](#the-peter-principle) - [Zasada Piotra](#zasada-piotra)
- [Zasada solidności (prawo Postela)](#the-robustness-principle-postels-law) - [Zasada solidności (prawo Postela)](#zasada-solidarności-prawo-postela)
- [SOLIDNY](#solid) - [SOLID](#solid)
- [Zasada pojedynczej odpowiedzialności](#the-single-responsibility-principle) - [Zasada pojedynczej odpowiedzialności](#zasada-pojedynczej-odpowiedzialności)
- [Zasada otwarcia/zamknięcia](#the-openclosed-principle) - [Zasada otwarcia/zamknięcia](#zasada-otwarcia-zamknięcia)
- [Zasada substytucji Liskov](#the-liskov-substitution-principle) - [Zasada substytucji Liskov](#zasada-substytucji-liskov)
- [Zasada segregacji interfejsów](#the-interface-segregation-principle) - [Zasada segregacji interfejsów](#zasada-segregacji-interfejsów)
- [Zasada odwrócenia zależności](#the-dependency-inversion-principle) - [Zasada odwrócenia zależności](#zasada-odwrócenia-zależności)
- [Zasada SUSZENIA](#the-dry-principle) - [Zasada DRY](#zasada-dry)
- [Zasada KISS](#the-kiss-principle) - [Zasada KISS](#zasada-kiss)
- [YAGNI](#yagni) - [YAGNI](#yagni)
- [Błędy przetwarzania rozproszonego](#the-fallacies-of-distributed-computing) - [Błędy przetwarzania rozproszonego](#błędy-przetwarzania-rozproszonego)
- [Lista rzeczy do przeczytania](#reading-list) - [Lista rzeczy do przeczytania](#lista-rzeczy-do-przeczytania)
- [Zasoby online](#online-resources) - [Zasoby online](#zasoby-online)
- [eBook w formacie PDF](#pdf-ebook) - [eBook w formacie PDF](#ebook-w-formacie-pdf)
- [Podcast](#podcast) - [Podcast](#podcast)
- [Tłumaczenia](#translations) - [Tłumaczenia](#tłumaczenia)
- [Powiązane projekty](#related-projects) - [Powiązane projekty](#powiązane-projekty)
- [Przyczynianie się](#contributing) - [Przyczynianie się](#przyczynianie-się)
- [DO ZROBIENIA](#todo) - [DO ZROBIENIA](#do-zrobienia)
<!-- vim-markdown-toc --> <!-- vim-markdown-toc -->
@@ -812,7 +812,7 @@ Zobacz też:
- [Prawo Hyruma](#hyrums-law-the-law-of-implicit-interfaces) - [Prawo Hyruma](#hyrums-law-the-law-of-implicit-interfaces)
### SOLIDNY ### SOLID
To jest akronim, który odnosi się do: To jest akronim, który odnosi się do:
@@ -837,7 +837,7 @@ Teoretycznie powinno to sprawić, że kod będzie bardziej niezawodny i łatwiej
Zobacz też: Zobacz też:
- [Programowanie obiektowe](#todo) - [Programowanie obiektowe](#todo)
- [SOLIDNY](#solid) - [SOLID](#solid)
### Zasada otwarcia/zamknięcia ### Zasada otwarcia/zamknięcia
@@ -854,7 +854,7 @@ Ta zasada ma szczególne znaczenie w przypadku programowania obiektowego, w któ
Zobacz też: Zobacz też:
- [Programowanie obiektowe](#todo) - [Programowanie obiektowe](#todo)
- [SOLIDNY](#solid) - [SOLID](#solid)
### Zasada substytucji Liskov ### Zasada substytucji Liskov
@@ -871,7 +871,7 @@ Zasada ta ma szczególne znaczenie w przypadku programowania obiektowego, w któ
Zobacz też: Zobacz też:
- [Programowanie obiektowe](#todo) - [Programowanie obiektowe](#todo)
- [SOLIDNY](#solid) - [SOLID](#solid)
### Zasada segregacji interfejsów ### Zasada segregacji interfejsów
@@ -888,7 +888,7 @@ Zasada ta ma szczególne znaczenie dla programowania obiektowego, w którym inte
Zobacz też: Zobacz też:
- [Programowanie obiektowe](#todo) - [Programowanie obiektowe](#todo)
- [SOLIDNY](#solid) - [SOLID](#solid)
- [Pisanie kaczki](#todo) - [Pisanie kaczki](#todo)
- [Oddzielenie](#todo) - [Oddzielenie](#todo)
@@ -907,11 +907,11 @@ Ta zasada jest złożona, ponieważ może się wydawać, że „odwraca” oczek
Zobacz też: Zobacz też:
- [Programowanie obiektowe](#todo) - [Programowanie obiektowe](#todo)
- [SOLIDNY](#solid) - [SOLID](#solid)
- [Odwrócenie sterowania](#todo) - [Odwrócenie sterowania](#todo)
- [Wstrzykiwanie zależności](#todo) - [Wstrzykiwanie zależności](#todo)
### Zasada SUSZENIA ### Zasada DRY
[Zasada DRY na Wikipedii](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) [Zasada DRY na Wikipedii](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)

View File

@@ -167,10 +167,10 @@ Xem thêm:
Định lý CAP (do Eric Brewer định nghĩa) tuyên bố rằng đối với một kho lưu trữ dữ liệu phân tán, chỉ có thể thực hiện hai trong ba bảo đảm sau (nhiều nhất): Định lý CAP (do Eric Brewer định nghĩa) tuyên bố rằng đối với một kho lưu trữ dữ liệu phân tán, chỉ có thể thực hiện hai trong ba bảo đảm sau (nhiều nhất):
- Tính đồng bộ (Consistency): khi đọc dữ liệu, mọi yêu cầu đều nhận được _dữ liệu gần đây nhất_ hoặc lỗi được trả về - Tính đồng bộ (Consistency): khi đọc dữ liệu, mọi yêu cầu đều nhận được _dữ liệu gần đây nhất_ hoặc lỗi được trả về
- Tính sn sàng (Availability): khi đọc dữ liệu, mọi yêu cầu đều nhận được _phản hồi không lỗi_ , mà không cần đảm bảo rằng đó là dữ liệu _mới nhất_ - Tính sn sàng (Availability): khi đọc dữ liệu, mọi yêu cầu đều nhận được _phản hồi không lỗi_ , mà không cần đảm bảo rằng đó là dữ liệu _mới nhất_
- Chịu lỗi(P-Partition Tolerance): khi một số lượng tùy ý yêu cầu mạng giữa các nút không thành công, hệ thống tiếp tục hoạt động như thiết kế. - Chịu lỗi(P-Partition Tolerance): khi một số lượng tùy ý yêu cầu mạng giữa các nút không thành công, hệ thống tiếp tục hoạt động như thiết kế.
Cốt lõi của lý do là như sau. Không thể đảm bảo sai biệt cục bộ không xảy ra (xem [Sự sụp đổ của Máy tính Phân tán](#the-fallacies-of-distributed-computing) ). Do đó, trong trường hợp sai biệt cục bộ, chúng ta có thể hoặc ngưng công việc (tăng tính đồng bộ và giảm tính sn sàng) hoặc tiếp tục công việc (tăng tính sn sàng nhưng giảm tính đồng bộ). Cốt lõi của lý do là như sau. Không thể đảm bảo sai biệt cục bộ không xảy ra (xem [Sự sụp đổ của Máy tính Phân tán](#the-fallacies-of-distributed-computing) ). Do đó, trong trường hợp sai biệt cục bộ, chúng ta có thể hoặc ngưng công việc (tăng tính đồng bộ và giảm tính sn sàng) hoặc tiếp tục công việc (tăng tính sn sàng nhưng giảm tính đồng bộ).
Tên gọi xuất phát từ các chữ cái đầu tiên (Consistency, Availability, Partition Tolerance). Lưu ý rằng điều rất quan trọng cần lưu ý là điều này _không_ liên quan đến [_ACID_](#TODO) , có định nghĩa khác về tính đồng bộ. Gần đây hơn, [định lý PACELC](#TODO) đã được phát triển để bổ sung các ràng buộc về độ trễ và tính đồng bộ khi mạng _không bị_ sai biệt cục bộ (tức là khi hệ thống đang hoạt động như mong đợi). Tên gọi xuất phát từ các chữ cái đầu tiên (Consistency, Availability, Partition Tolerance). Lưu ý rằng điều rất quan trọng cần lưu ý là điều này _không_ liên quan đến [_ACID_](#TODO) , có định nghĩa khác về tính đồng bộ. Gần đây hơn, [định lý PACELC](#TODO) đã được phát triển để bổ sung các ràng buộc về độ trễ và tính đồng bộ khi mạng _không bị_ sai biệt cục bộ (tức là khi hệ thống đang hoạt động như mong đợi).