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:

en.icon --- This page is auto-translated from [/nishio/(1.5.2) Learning from history](https://scrapbox.io/nishio/(1.5.2) Learning from history) using DeepL. If you looks something interesting but the auto-translated English is not good enough to understand it, feel free to let me know at [@nishio_en](https://twitter.com/nishio_en). I'm very happy to spread my thought to non-Japanese readers.