fundamental-laws

15 Fundamental Laws of the Internet

(AKA How To Sound Smart In Your Next Online Rant)

Wiio's Law

What is the internet? The internet is, at heart, a communication tool, a way for disparate people across the globe to spread ideas, opinions, and generally communicate with each other more easily than has ever been possible. Unfortunately, communication is hard.

Finnish academic Osmo Antero Wiio formulated a serious of humorous laws that succinctly explain how communication works between humans; specifically, that it doesn't. The set of laws Wiio created are often summarized as Wiio's Law:

"Communication usually fails, except by accident."

So maybe, instead of being angry that people didn't get what we said, perhaps we should merely be pleased when, against all odds, they actually understand what we are saying.

Kranzburg's First Law of Technology

Melvin Kranzberg was a professor of history, specifically the history of technology (and, apparently, a WWII-era interrogator. Office hours must have been stressful for his students). Kransberg formulated a series of laws about technology and its place in history, most famous of which is his First Law of Technology:

"Technology is neither good nor bad; nor is it neutral."

In other words, technology is not inherently anything; it's value is imposed upon it by whomever uses it. Technology itself has no intrinsic value. Perhaps this is why Apple removed the headphone jack from the iPhone.

Sturgeon's Law

Ever wonder why the vast majority of things on the internet are terrible? So did Theodore Sturgeon, except for everything. Sturgeon was a science fiction and horror writer, and he was appalled that most science fiction of his day was utter trash. Hence he coined Sturgeon's Revelation, which is now more widely known as Sturgeon's Law.

"90% of everything is crap."

Yes, everything. Makes me wonder if he included his own work in that statement.

But it's not all tongue-in-cheek: Sturgeon's law has been cited by noted philosopher Daniel Dennett as one of his critical tools for thinking. So not only is 90% of everything crap, the awareness of this fact is important to be properly aware of critical thinking. Yay for not liking anything ever!

The 1% Rule

The 1% Rule is an adage which states:

"Only 1% of the users of a website actively create new content, while the other 99% of the participants only lurk."

In other words, most people just sit in the metaphorical shadows and read what the 1% write. This is particularly interesting to think about in the context of designing communities like reddit or Stack Overflow, since if only 1% of the people will create content, how do the site owners get the 99% to stick around and read things? Unless you get incredibly lucky, figuring out how to make both the 1% and the 99% happy is very tricky, and only a few sites get it right.

Dickwad Theory

If you don't like swearing, you'd best skip this section. The Dickwad theory was put forth in the online comic strip Penny Arcade, and states:

"Normal Person + Anonymity + Audience = Total Dickwad"

Ever wonder why trolls exist on the internet in exponentially greater numbers than in real life? Dickwad theory proposes the reason: when a normal person received total anonymity and an audience, s/he loses all their inhibitions and promptly starts to act like a total raging asshole. Anyone who has been on the internet long enough has encountered someone who proves this theory, and if they say they haven't, it's because they themselves are proving it.

Dickwad theory is apparently also known as online disinhibition effect, but that's not nearly as interesting a name for this phenomenon.

Godwin's Law

The next few laws relate to how people communicate on the Internet, specifically how they use text. This particular adage is the one law on this list that, most likely, everyone has heard of. Godwin's Law was written by attorney Mike Godwin on a Usenet group in 1990, and it states the following:

"As an online discussion grows longer, the probability of a comparison involving Nazis or Hitler approaches one."

What's particularly interesting about this law is that Godwin himself deliberately and repeatedly posted this law anywhere he could, according to a 1994 article written by him and published in Wired. He specifically calls it "meme engineering" (as he invented the idea of an "internet meme"), and it remains possibly the most successful case of this yet seen.

Poe's Law

There's an inherent problem in trying to communicate via text: the inflection and intonation that is so readily apparent in verbal speech is missing. Consequently, what would be obvious when spoken might be missed when written down.

Poe's Law (named after Nathan Poe, who wrote the original formulation of it in 2005) states the following:

"Without a clear indicator of the author's intent, parodies of extreme views will be mistaken by some readers or viewers as sincere expressions of the parodied views."

No matter how obvious it is that you are making fun of something, unless you explicitly state that you are doing so, someone somewhere will think you are being serious.

The original text of this law cited Creationism, but it has been repeatedly proven to be true for any sufficiently contentious topic (by which I mean: all of them).

Skitt's Law

One of the more obscure laws on this list is Skitt's Law, which states:

"Any post correcting an error in another post will contain at least one error itself."

I'm tempted to think of this as the Law of Glass Houses, after the famous proverb, "Those who live in glass houses should not throw stones." At any rate, Skitt's Law demonstrates an incontrovertible fact about the internet: if you feel the need to correct someone else, you'd best be prepared for someone to correct you.

Law of Exclamation

Punctuation can actually be a tip-off as to whether or not what you are reading is total crap. The Law of Exclamation says:

"The more exclamation points used in an email (or other posting), the more likely it is a complete lie."

An example of this law is found in the novel Reaper Man by Terry Pratchett, one of his Discworld series. In it, a character states that "five exclamation marks [are] the sure sign of an insane mind." Remember this next time you think you need more than one exclamation point (and are not a teenager).

Cunningham's Law

The modern internet owes a lot to Ward Cunningham, a programmer who among other things invented the wiki. He's also known for having his name attached to a particularly keen insight into how questions and answers work on the internet (though he didn't originate this law; his coworker Steven McGeady did). Cunningham's Law is usually written as follows:

"The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer."

McGeady even cited a site that relies on Cunningham's invention as the best proof of the truth of this law: Wikipedia.

The Wiki Rule

Speaking of wikis, there's another theory that states that there is a wiki for anything. It's called The Wiki Rule:

"There's a wiki for that."

Yes, that. And that. And even that. If you can think of it, if it has at least one fan out there, there's probably a wiki for it, and some of these wikis can get astoundingly large.

Danth's Law

Ever get into an argument on the internet? Stop lying; of course you have. Have you ever been able to figure out who actually won said argument? Danth's Law gives you this handy tip:

"If you have to insist that you've won an Internet argument, you've probably lost badly."

Because if you'd actually won the argument, you wouldn't need to argue that you did.

Law of the Echo Chamber

Let's be real for a second: in a lot of ways, the Internet has made modern life easier and more accessible, but in some ways the promises of this great web of information simply haven't materialized.

The idealistic goal of the internet was to be democratic, to show us all sides of any possible argument in a non-biased way. Problem is, people are inherently biased, and the internet is run by people, so that bias leaks in. In fact, it leaks so much that more often than not your circle of internet friends is populated by people who subscribe to the same opinions you do.

I therefore propose something I've been calling the Law of the Echo Chamber:

"If you feel comfortable enough to post an opinion of any importance on any given Internet site, you are most likely delivering that opinion to people who already agree with you."

Munroe's Law

There is a corollary to the Law of the Echo Chamber, which I've taken to calling Munroe's Law after the cartoonist who draws and publishes the comic xkcd. A while back Randall Munroe posted the following cartoon, and it has since become something of a meme.

We've all been there. That comic is merely a funny way of stating the following:

"You will never change anyone's opinion on anything by making a post on the Internet. This will not stop you from trying."

Golden Rule of the Internet (AKA Wheaton's Law)

The traditional phrasing of the Golden Rule is "do unto others as you would have them do unto you." Actor and writer Wil Wheaton coined a slightly shorter version which has occasionally been referred to as Wheaton's Law:

"Don't be a dick"

Because sometimes it really is just that simple.

Summary

Many of the laws enumerated above don't apply to just the internet; they apply to life and behavior of humans in general. This is, of course, intentional. After all, the users of the internet are people, regardless of what they want you to think they are.

Did I miss any fundamental laws of the internet that you've found useful? Feel free to sound off in the comments!

Happy Coding!

15 Fundamental Laws of Software Development

(AKA How To Sound Smart At Your Next Team Meeting)

Occam's Razor

This widely-known adage dates to a philosopher and friar from the fourteenth century named William of Ockham. Occam's Razor is often stated as:

"Among competing hypotheses, the one with the fewest assumptions should be selected."

It's no surprise that the whole reason we can recall an adage from 600+ years ago is that it works so well. Occam's Razor is so basic, so fundamental, that it should be the first thing we think of when deciding between two competing theories. I'd even go so far as to argue that in the vast majority of cases, simpler is better.

Hanlon's Razor

Sometimes I feel like users are intentionally trying to piss me off. They push buttons they weren't supposed to, found flaws that shouldn't have been visible to them (since they weren't to me), and generally make big swaths of my life more difficult than it would otherwise be.

I try to remember, though, that the vast majority of actions done by people which may seem malicious are not intentionally so. Rather, it's because they don't know any better. This is the crux of an adage known as Hanlon's Razor, which states:

"Never attribute to malice what can be adequately explained by stupidity."

Don't assume people are malicious; assume they are ignorant, and then help them overcome that ignorance. Most people want to learn, not be mean for the fun of it.

The Pareto Principle

The last Basic Law of Software Development is the Pareto Principle. Romanian-American engineer Joseph M Juran formulated this adage, which he named after an idea proposed by Italian economist and thinker Vilfredo Pareto. The Pareto Principle is usually worded as:

"80% of the effects stem from 20% of the causes."

Have you even been in a situation where your app currently has hundreds of errors, but when you track down one of the problems, a disproportionate amount of said errors just up and vanish? If you have (and you probably have), then you've experienced the Pareto Principle in action. Many of the problems we see, whether coding, dealing with customers, or just living our lives, share a small set of common root issues that, if solved or alleviated, can cause most or all of the problems we see to disappear.

In short, the fastest way to solve many problems at once is the find and fix their common root cause.

Dunning-Kruger Effect

Researchers David Dunning and Justin Kruger, conducting an experiment in 1999, observed a phenomenon that's come to be known as the Dunning-Kruger effect:

"Unskilled persons tend to mistakenly assess their own abilities as being much more competent than they actually are."

What follows from this is a bias in which people who aren't very good at their job think they are good at it, but aren't skilled enough to recognize that they aren't. Of all the laws in this list, the Dunning-Kruger effect may be the most powerful, if for no other reason than it has been actively investigated in a formal setting by a real-life research team.

Linus's Law

Author and developer Eric S. Raymond developed this law, which he named after Linus Torvalds. Linus's Law states:

"Given enough eyeballs, all bugs are shallow."

In other words, if you can't find the problem, get someone else to help. This is why concepts like pair programming work well in certain contexts; after all, more often than not, the bug is in your code.

Robustness Principle (AKA Postel's Law)

One of the fundamental ideas in software development, particularly fields such as API design, can be concisely expressed by the Robustness Principle:

"Be conservative in what you do, be liberal in what you accept from others."

This principle is also called Postel's Law for Jon Postel, the Internet pioneer who originally wrote it down as part of RFC 760. It's worth remembering, if for no other reason than an gentle reminder that often the best code is no code at all.

Eagleson's Law

Ever been away from a project for a long time, then returned to it and wondered "what idiot wrote this crap?" only to find out that the idiot was you?

Eagleson's Law describes this situation quite accurately:

"Any code of your own that you haven't looked at for six or more months might as well have been written by someone else."

Remember that the next time you're rejoining a project you've been away from for months. The code is no longer your code; it is someone else's that you've now been tasked with improving.

Peter Principle

One of the fundamental laws that can apply to managers (of any field, not just software) is the Peter Principle, formulated by Canadian educator Laurence J Peter:

"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."

The Peter Principle is often sarcastically reduced to "Managers rise to their level of incompetence." The idea of this principle looks like this:

A chart showing the advancement of a candidate to higher and higher levels of management, until reaching a point at which s/he is no longer qualified to obtain via skill.

The problem revealed by the Peter Principle is that workers tend to get evaluated on how well they are currently doing, and their superiors assume that those workers would also be good at a different role, even though their current role and their intended role may not be the same or even similar. Eventually, such promotions place unqualified candidates in high positions of power, and in particularly bad cases you can end up with pointy-haired bosses at every step of an organization's hierarchy.

Dilbert Principle

Speaking of pointy-haired bosses, cartoonist Scott Adams (who publishes the comic strip Dilbert) proposed an negative variation of the Peter Principle which he named the Dilbert Principle. The Peter Principle assumes that the promoted workers are in fact competent at their current position; this is why they got promoted in the first place. By contrast, the Dilbert Principle assumes that the least competent people get promoted the fastest. The Dilbert Principle is usually stated like this:

"Incompetent workers will be promoted above competent workers to managerial positions, thus removing them from the actual work and minimizing the damage they can do."

This can be phrased another way: "Companies are hesitant to fire people but also want to not let them hurt their business, so companies promote incompetent workers into the place where they can do the least harm: management."

Hofstadter's Law

Ever noticed that doing something always takes longer than you think? So did Douglas Hofstadter, who wrote a seminal book on cognitive science and self-reference called Godel, Escher, Bach: An Eternal Golden Braid. In that book, he proposed Hofstadter's Law:

"It always takes longer than you expect, even when you take into account Hofstadter's Law."

Always is the key word: nothing ever goes as planned, so you're better off putting extra time in your estimates to cover some thing that will go wrong, because it unfailingly does.

The 90-90 Rule

Because something always goes wrong, and because people are notoriously bad at estimating their own skill level, Tom Cargill, an engineer at Bell Labs in the 1980's, proposed something that eventually came to be called the 90-90 rule:

"The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time."

Perhaps this explains why so many software projects end up over budget and short on features.

Parkinson's Law

What is possibly the most astute observation that can be applied to the art of estimation comes from British naval historian C. N. Parkinson. He jokingly proposed an adage called Parkinson's Law, which was originally understood to be:

"Work expands so as to fill the time available for its completion."

Remember this next time you pad your estimates.

Sayre's Law

Economist and professor Charles Issawi proposed an idea that came to be known as Sayre's Law, named after a fellow professor at Columbia University. Issawi's formulation of this law looks like this:

"In any dispute the intensity of feeling is inversely proportional to the value of the issues at stake."

In short, that the less significant something is, the more passionately people will argue about it.

Parkinson's Law of Triviality (AKA Bikeshedding)

Sayre's Law segues directly into another law that applies to meetings, and here we again encounter the ideas of C.N. Parkinson. Parkinson's Law of Triviality states:

"The time spent on any agenda item will be in inverse proportion to the sum of money involved."

Parkinson imagined a situation in which a committee of people were tasked with designing a nuclear reactor. Said committee then spends a disproportionate amount of time designing the reactor's bikeshed, since any common person will have enough life experience to understand what a bikeshed should look like. Clearly the "core" functions of the reactor are more important, but they are so complex that no average person will understand all of them intimately. Consequently, time (and opinions) are spent on ideas that everyone can comprehend, but which are clearly more trivial.

Law of Argumentative Comprehension

The last law is one I totally made up I use to shorthand both Sayre's Law and Parkinson's Law of Triviality. I call it the Law of Argumentative Comprehension:

"The more people understand something, the more willing they are to argue about it, and the more vigorously they will do so."

Summary

You'll notice that many of the laws above don't directly apply specifically to software, and this is intentional. The fact remains that software is built for people to use and interact with, so many of these laws relate to dealing with people rather than code.

No pithy quote will ever replace the experience you gain every day by writing code, interacting with users, and generally getting better every day. Still, by keeping in mind these 15 laws of software development, you might just make yourself a better developer. Or at least a more knowledgeable one, and really, aren't those the same thing?

Did I miss any laws that you consider fundamental to the process of creating software, or any of the activity that goes on around said process (e.g. estimations, meetings, etc.)? Share in the comments!

Happy Coding!