Learning from history is a comparison between now and the past. For example, in the past events, there may be structures similar to those currently in progress. By finding common patterns, you can predict what will happen next. Also, compare before and after, you can find a difference. Focus on difference and think how it changed and why it changed. It deepens your understanding.
Necessity is the mother of invention. Necessity makes people create artifacts such as programs. How was it before they made the artifacts? How is it different from now? By thinking those questions, you can see why did they make the artifacts.
Some programmers misunderstand that they can understand everything by reading the source code. However, the source code has only the information about how it is implemented now. Source code does not have the information of the past, such as what problem was before the change. Source code does not have the information of “why.” Why did we need to change? Why was this option chosen? That information is in comments, commit logs, interactions on the developer’s mailing list.
Additional Footnote for English reader:
- *0: In Japanese, the phrase “learning from history” is related the quote of Otto von Bismarck: “Only an idiot believes to learn from their own experiences. I prefer to learn from the experience of others in order to avoid mistakes of my own.”