Tangential: Peter Naur has something to say about this in his "Programming as Theory Building" paper.
TL;DR: You have to reimplement the application or features to understand the "why" regarding technical decisions.