Source code archaeology

Published on 2013-11-14 by John Collins.
Archaeological excavation in Härnösand, Ångermanland, 1908

According to Wikipedia1:

"Archaeology, or archeology[1] (from Greek ἀρχαιολογία, archaiologia – ἀρχαῖος, arkhaios, "ancient"; and -λογία, -logia, "-logy[2]"), is the study of human activity in the past, primarily through the recovery and analysis of the material culture and environmental data that they have left behind, which includes artifacts, architecture, biofacts and cultural landscapes (the archaeological record)."

You can also add legacy software systems to that list of ancient artifacts. Like real antiquities, legacy software is often poorly understood by its inheritors, due to a lack of supporting documentation and access to the original designers.

Here are some techniques that I have found useful when dealing with legacy code:

"Refactor mercilessly. Do not be afraid of old code."