Fork me on GitHub

Ahad Bokhari

Some Laws of Software Development

Edit   ·   356 words

Basic rules, so called truths can be examined to get an understanding of developing software. Brownie points can be earned by referring to some of these fundamental principles.

I. Dilbert Principle

One of my personal favorites, Scott Addams, the author of the famous comic series ‘Dilbert’ states:

The Dilbert principle refers to a 1990s theory by Dilbert cartoonist Scott Adams stating that companies tend to systematically promote their least-competent employees to management (generally middle management), in order to limit the amount of damage they are capable of doing.

This is comparable to the Peter principle which opposes Scott Adams coined principle.

II. Parkinson’s Law of Triviality

Similar to bikeshedding, the law of triviality states:

Parkinson’s law of triviality is C. Northcote Parkinson’s 1957 argument that members of an organisation give disproportionate weight to trivial issues.

III. Peter Principle

Most managers should know this one - strangely I have asked a couple and they didn’t have the faintest idea:

The Peter principle is a concept in management theory formulated by Laurence J. Peter in which the selection of a candidate for a position is based on the candidate’s performance in their current role, rather than on abilities relevant to the intended role. Thus, employees only stop being promoted once they can no longer perform effectively, and “managers rise to the level of their incompetence.”

IV. Dunning-Kruger Effect

David Dunning and Justin Kruger studied incompetent people in different situations and found:

Relatively unskilled persons suffer illusory superiority, mistakenly assessing their ability to be much higher than it really is.

In layman’s terms one could say incompetent people failing to understand their own levels of incompetence.

V. Conway’s Law

Melvin Conway introduced this idea in 1967 and it states:

Organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations.

…which basically means any piece of software reflects the organizational structure that produced it