piet_hut's picture
professor of astrophysics at the Institute for Advanced Study, in Princeton
Hut's Law

Hut's First Law

Any attempt to define what is science is doomed to failure

Scientists often attack what they consider irrational creeds by first defining what counts as science and then showing that those creeds don't fit within the limits specified. While their motive is often right, their approach is totally wrong. Science has no method. It is opportunistic in the extreme, with theory adapting with admirable agility to the most amazing experimental discoveries, no matter what previous 'corner stones' have to be given up: quantum mechanics is the most striking example. This opportunism is the only reason that science has remained alive and well, notwithstanding the human tendency for stagnation that is exemplified so clearly through more than a dozen successive generations of individual scientists.

Hut's Second Law

In scientific software development, research = education

When writing a large software package or a whole software environment, the most efficient way to produce a robust product is to write documentation simultaneously with the computer codes, on all levels: from comment lines to manual pages to narrative that explains the reasons for the many choices made. Having to explain to yourselves and your coworkers how you choose what why when is the best guide to quickly discovering hidden flaws and better alternatives, minimizing the need to
backtrack later. Therefore, the most efficient way to write a large coherent body of software as a research project is to view it as an educational project.

I have come across similar endorsements of documentation in various places, including Donald Knuth's idea of literate programming, and Gerald Sussman's advice to write with utmost clarity for humans first, and for computers as an afterthought.