# Changes: Hofstadter's Law

Back to page

Hofstadter's Law states that:

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

This self-referencing adage was coined by Douglas Hofstadter in his 1979 magnum opus Gödel, Escher, Bach: An Eternal Golden Braid [1]. It is often cited among programmers, especially in discussions of techniques to improve productivity, such as The Mythical Man-Month or Extreme Programming. Behind its whimsical façade, Hofstadter's Law is a profound statement of the difficulty of accurately estimating the amount of time it will take to complete tasks of any substantial complexity.

Note that Hofstadter's Law is recursive in nature (i.e., it calls itself by reference) and never bottoms out to a trivial case. That is, even after you have taken Hofstadter's Law into account, by Hofstadter's Law you must still take Hofstadter's Law into account, and this remains true no matter how many times you have already applied Hofstadter's Law. It is therefore impossible to ever fully take Hofstadter's Law into account, at least in finite time. While some recursive functions do seem to eventually converge on an approximate solution (e.g., x/2 approaches zero when its output is repeatedly fed back into it), anyone who has attempted to manage a software project can testify that this does not seem to be true of Hofstadter's Law; if anything, estimates that take Hofstadter's Law into account even partially seem to have an infinite, or at least very large, upper bound. Thus, Hofstadter's Law implies that it is not merely difficult to estimate a project—it is potentially infinitely difficult (finite difficulty, as in the solution to Zeno's Paradox, requires that the extra difficulty decrease quickly enough for the recursive series to converge to a finite value in finite time).

A (somewhat joking) rule of thumb introduced by Hofstadter for calculating an approximate time is to double the number and step up to the next higher units. For example, a job estimated at 1 hour can be accomplished in 2 days, while a 3-month project will take you 6 years.

## See also Edit

 This page uses Creative Commons Licensed content from Wikipedia (view authors).