"A scientist builds in order to learn; an engineer learns in order to build." | ||
--Fred Brooks |
What scientists do and what engineers do is different. Scientists are concerned with extending knowledge, engineers with applying it. When a scientist builds something, its purpose is fulfilled when the desired knowledge is gained – at that point, the useful life of the object is over. When an engineer builds something, a long useful lifetime is the purpose of applying the knowledge.
Much scientific software is written by scientists for scientific purposes. It is no surprise that it is often considered expendable once the knowledge it was written to produce has been extracted. While this approach produces immediate results, other researchers in the field who would also wish to use the software often find it difficult to use, maintain, and extend.
As problems and budgets get larger, funding agencies are starting to require that software be developed so that its lifetime is longer...