  Reading computer program code and documentation written by others is, we are
told, one of the best ways to learn the art of writing intelligible and
maintainable code and documentation. The software resurrection exercise,
introduced in this paper, requires a motivated learner to compile and test a
historical release (e.g. 20 years old) version of a well maintained and widely
adopted open source software on a modern hardware and software platform. This
exercise concludes by writing a critique based on issues encountered while
compiling and testing a historical software release on a hardware and software
platform that could not have been foreseen at the time of release. The learner
is also required to fix the issues as a part of the software resurrection
exercise. The seemingly pointless exercise of resurrecting a historical
software allows motivated learners to experience the pain and joy of software
maintenance which is essential for understanding the factors that contribute to
intelligibility and maintainability of program code and documentation. The
concept of software resurrection exercise is illustrated using a version of the
SQLite database engine that was released 20 years ago. This illustration shows
that software engineering principles (or programming pearls) emerge when a
historical software release is adapted to run successfully on a modern
platform. The software resurrection exercise also has the potential to lay
foundations for a lifelong willingness to explore and learn from existing
program code.
