Note: You are currently viewing my old web site. There is a new version with most of this content at OJB.NZ.
The new site is being updated, uses modern techniques, has higher quality media, and has a mobile-friendly version.
This old site will stay on-line for a while, but maybe not indefinitely. Please update your bookmarks. Thanks.


[Index] [Menu] [Up] Blog[Header]
Graphic

Add a Comment   (Go Up to OJB's Blog Page)

These Laws are Real

Entry 1983, on 2019-06-07 at 12:39:10 (Rating 2, Comments)

Recently I heard a witty aphorism in a podcast which I wanted some more information about. So I went searching on the internet and found some details and, inevitably, followed some links to other aphorisms which I also found interesting. Of course, that is one of the great things about the internet: seeking one piece of information often leads to the discovery of a lot more, and some of that is more interesting than the original subject of the search!

Anyway, after finding these witty sayings I thought they might make a good subject for a blog post, especially in relation to how true, or relevant in other ways, they might be. So let's get started with a discussion of a few of these now...

The Ninety-ninety rule

This is a flippant rule which contains an element of truth, which is attributed to Tom Cargill of Bell Labs. Basically, it states that the first 90% of the work on a programming project takes 90% of the time, and that the second 90% takes the remaining 90%. Of course, the joke is that the numbers add to 180% and the last part of the project, which was originally intended to be only 10% of the total effort, really takes as much time as the first 90% did.

I have found some truth in this, although no one has ever calculated the actual numbers, as far as I know. It does make sense though, because most projects involve getting the basic stuff (which theoretically compromises 90% of the total) working first, then doing the last 10% of custom code, plus (and this is probably where the real problem lies) debugging the first 90%!

Wirth's law

This is an adage concerning the relative performance of computer software and hardware. It states that "software is getting slower more rapidly than hardware is becoming faster". It is named after famous computer scientist Niklaus Wirth, who discussed it in his 1995 paper "A Plea for Lean Software".

Again, I'm not aware of any actual quantitative research on this, but there is certainly anecdotal evidence of its accuracy. The most obvious example to me at this point of time is Microsoft Office running on the Mac. Up until a few years back most Mac users used Office 2011. On decent hardware the components of Office, such as Word, took a few seconds to launch, or maybe just one second on a fast machine.

But in 2016 Microsoft released Office 2016, and it could take up to 30 seconds to launch on the same machine that previously took less than 5. Not only that, but the new version was arguably even more obscure and poorly designed that the earlier one, so the user was gaining little or nothing from the extra launch time.

Even on really new computers Office 2016 (and 2019) are slower to launch than Office 2011 is on much older hardware. This seems like a clear example of Wirth's law in action, and from (arguably) the world's most important (and maybe most incompetent) software company.

Hanlon's razor

And maybe related to that previous observation, we come to Hanlon's razor, which is an aphorism stated in different ways, but probably most commonly as: "Never attribute to malice that which is adequately explained by stupidity." It was probably named after a Robert J Hanlon, although the true origin is uncertain.

So in the example above I said that Microsoft programs have become very slow to launch. Some people attribute this to Microsoft deliberately crippling the Mac versions so that people might be more likely to use the Windows version of the programs instead. But Hanlon's razor would suggest that this conclusion is unnecessary, because pure incompetence is a far more likely reason, especially when other examples of poor design, bugginess, and terrible user interfaces in both Mac and Windows products from Microsoft are considered.

Parkinson's law

Parkinson's law is attributed to Cyril Northcote Parkinson, and appeared in an essay he published in The Economist in 1955. It states that "work expands so as to fill the time available for its completion", and is sometimes applied to the effects of excessive levels of bureaucracy in organisations.

It seems to make sense in terms of human nature that this effect would exist. As more time is made available for a project it is tempting to involve more people in the process. This might be because a project with a long timeframe could be seen as more important, and therefore justifies more planning, whether that is really necessary or not. Or maybe it is just because of a general attitude of complacency where there might be the idea that plenty of time is available so why not involve other, possibly unnecessary, people.

Hofstadter's law

Finally, I want to discuss Hofstadter's law, which overlaps with some of the others I have already listed. This adage, coined by Douglas Hofstadter in his book "Godel, Escher, Bach: An Eternal Golden Braid" describes the widely experienced difficulty of accurately estimating the time it will take to complete tasks of substantial complexity, and states "It always takes longer than you expect, even when you take into account Hofstadter's Law."

The clever bit is, or course, the fact that the law refers to itself, and says that even knowing it exists doesn't help to avoid it. So when a time estimate is made for completion of a project the person involved might think it will take a month, but knowing Hofstadter's law, revises that to 2 months to compensate. Of course, in reality it takes 4 months!

I have been the victim of this on almost every occasion I have started a significant software project. I think a lot of this problem happens after the estimate is made, and it might be caused by both the ninety-ninety rule (the last small part of the project unexpectedly takes much longer than the first theoretically bigger part) and Parkinson's law (the work expands to fill the time available).

So those are a few of the best laws I found. There were many others as well, which I discovered as I took related links to new pages, so maybe those might be a good subject for future posts. In fact, there is one in particular which I really liked and might deserve a whole post on its own, but that might take a bit of time to research: probably about a day, oh wait, I forgot about Hofstadter's law, that's 2 days... no four!

-

There are no comments for this entry.

-

You can leave comments about this entry using this form.

Enter your name (optional):

Enter your email address (optional):

Enter the number shown here:
Number
Enter the comment:

To add a comment: enter a name and email (both optional), type the number shown above, enter a comment, then click Add.
Note that you can leave the name blank if you want to remain anonymous.
Enter your email address to receive notifications of replies and updates to this entry.
The comment should appear immediately because the authorisation system is currently inactive.

[Comments][Preview][Blog]

[Contact][Server Blog][AntiMS Apple][Served on Mac]