Laws of Computer Programming

I. Any given program, when running, is obsolete.

II. Any given program costs more and takes longer.

III. If a program is useful, it will have to be changed.

IV. If a program is useless, it will have to be documented.

V. Any program will expand to fill available memory.

VI. The value of a program is proportional to the weight of its output.

VII. Program complexity grows until it exceeds the capabilities of the programmer who must maintain it.

VIII. Any non-trivial program contains at least one bug.

IX. Undetectable errors are infinite in variety, in contrast to detectable errors, which by definition are limited.

X. Adding manpower to a late software project makes it later.

Lubarsky's Law of Cybernetic Entomology: There's always one more bug.

Shaw's Principle: Build a system that even a fool can use, and only a fool will want to use it.

Woltman's Law: Never program and drink beer at the same time.

Gallois' Revelation: If you put tomfoolery into a computer, nothing comes out but tomfoolery. But this tomfoolery, having passed through a very expensive machine, is somehow enobled, and no one dares to criticize it.


jwalker@cs.oberlin.edu